Windows 環境下解決fastdfs_client安裝報錯的問題

最近做的Django項目中需要存儲圖片文件,爲了解決圖片存儲的問題,所以引入了FastDFS,主要是以下兩個問題

  • 存儲相同名稱的不同文件
  • 存儲不同名稱的相同文件

簡單說一下FastDFS

FastDFS 是用 c 語言編寫的一款開源的分佈式文件系統。

FastDFS 爲互聯網量身定製, 充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標,使用 FastDFS 很容易搭建一套高性能的文件服務器集羣提供文件上傳、下載等服務。

FastDFS 架構包括 Tracker server 和 Storage server。客戶端(client)請求 Tracker server 進行文 件上傳、下載,通過 Tracker server 調度最終由 Storage server 完成文件上傳和下載。

開發環境

1.docker容器中運行單節點的跟蹤器(tracker)和存儲節點(storage)
2.在windows10系統,python虛擬環境下安裝 fastdfs_client 進行開發調試(python解釋器版本:3.6.5)
3.使用的IDE:pycharm

安裝fastdfs_client報錯

pip install fdfs_client
報錯信息

解決辦法

1.下載fdfs_client包
(下載地址:http://down.51cto.com/data/2448725)
解壓之後直接將fdfs_client文件夾copy到python解釋器的 /lib 目錄下
解壓得到的文件夾:
fdfs
copy到python解釋器的 /lib 目錄下
fdfs_client
2. 修改fdfs_client/storage_client.py文件,將第12行刪除或註釋(否則,使用時會報錯ImportError: No module named sendfile)
# from fdfs_client.sendfile import *
3.安裝 mutagen 和 requests
pip install mutagen
pip isntall requests
4.修改fastdfs配置文件:client_config

# connect timeout in seconds
# default value is 30s
connect_timeout=30

# network timeout in seconds
# default value is 30s
network_timeout=60

# the base path to store log files

# 日誌存放路徑  
base_path=../../logs    

# tracker_server can ocur more than once, and tracker_server format is
# "host:port", host can be hostname or ip address
# tracker服務器
tracker_server=192.168.11.200:22122     

#standard log level as syslog, case insensitive, value list:
### emerg for emergency
### alert
### crit for critical
### error
### warn for warning
### notice
### info
### debug
log_level=info

# if use connection pool
# default value is false
# since V4.05
use_connection_pool = false

# connections whose the idle time exceeds this time will be closed
# unit: second
# default value is 3600
# since V4.05
connection_pool_max_idle_time = 3600

# if load FastDFS parameters from tracker server
# since V4.05
# default value is false
load_fdfs_parameters_from_tracker=false

# if use storage ID instead of IP address
# same as tracker.conf
# valid only when load_fdfs_parameters_from_tracker is false
# default value is false
# since V4.05
use_storage_id = false

# specify storage ids filename, can use relative or absolute path
# same as tracker.conf
# valid only when load_fdfs_parameters_from_tracker is false
# since V4.05
storage_ids_filename = storage_ids.conf


#HTTP settings
http.tracker_server_port=80

#use "#include" directive to include HTTP other settiongs
##include http.conf

5.在 python 虛擬環境下進入 shell 終端進行上傳測試

導入模塊:
from fdfs_client.client import Fdfs_client

導入配置文件
注意:windows環境下絕對路徑會發生轉義,需要加上 "r" 說明是原生字符串
client = Fdfs_client(r'配置文件絕對路徑')

上傳圖片
注意:windows環境下絕對路徑會發生轉義,需要加上 "r" 說明是原生字符串
client.upload_by_filename(r'圖片文件絕對路徑')

上傳測試成功!
上傳測試

總結

1.修改lib/fdfs_client/storage_client.py文件,註釋第12行;
2.windows環境下路徑分隔符是 ‘\’ ,而linux使用 ‘/’,所以需要使用 ‘r’ 來聲明是原生字符串;
3.如果上傳文件提示連接tracker失敗,請仔細檢查client_config配置文件,配置文件中一定不要出現中文;
4.如果剛開始使用 pip install fdfs_client,報錯,不要盲目安裝VC++ 14.0,可以先去 控制面板==>>程序==>>程序和功能 查看是否已經安裝過。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章