1. FastDFS
https://github.com/happyfish100/fastdfs
2. Docker
https://hub.docker.com/search?q=fastdfs
3. Python3 interface to the FastDFS:
3.1 fdfs_client-py 只适用 Python2
https://github.com/hay86/fdfs_client-py fdfs_client-py-master.zip
Python3下会报错:
File "/xxx/venv/lib/python3.10/site-packages/fdfs_client/utils.py", line 9, in
from mutagen._compat import StringIO
将错误提示中utils.py的from mutagen._compat import StringIO改为:
from mutagen._senf._compat import StringIO
仍然会报错:
File "/xxx/venv/lib/python3.10/site-packages/fdfs_client/connection.py", line 26, in __init__
self.remote_port = conn_kwargs['port']
KeyError: 'port'
经测试这个fork https://github.com/JaceHo/fdfs_client-py 在修改了utils.py后,在Python 3.10.4中不报错,可以使用。
3.2 Python3 可使用 py3Fdfs
测试环境Python 3.10.4 参考于 https://github.com/hay86/fdfs_client-py/issues/13
# https://pypi.org/project/py3Fdfs/ py3Fdfs-2.2.0.zip
pip install py3Fdfs
from fdfs_client.client import Fdfs_client, get_tracker_conf
client_config_dict = get_tracker_conf('/etc/fdfs/client.conf')
# 注意:client.conf是从fdfs服务器上复制的文件,也可以在这里下载,需修改的内容:
# base_path=FastDFS客户端存放日志文件的目录
# tracker_server=运行Tracker服务的机器ip:22122
print(client_config_dict)
# get_tracker_conf将client.conf转为了字典
client = Fdfs_client(client_config_dict)
ret = client.upload_by_filename('test.jpg')
print(ret)
执行结果
{'host_tuple': ('192.168.1.111',), 'port': 22122, 'timeout': 5, 'name': 'Tracker Pool'}
{'Group name': b'group1', 'Remote file_id': b'group1/M00/00/00/wKgBu2MIzP-AEMosAAKfVZVY0hQ703.jpg', 'Status': 'Upload successed.', 'Local file name': '/home/ubuntu/PycharmProjects/test_project/test.jpg', 'Uploaded size': '167.83KB', 'Storage IP': b'192.168.1.111'}
进程已结束,退出代码0