首页 > 编程语言 > 详细

Python3与FastDFS交互(py3Fdfs)

时间:2019-09-23 09:02:48      阅读:526      评论:0      收藏:0      [点我收藏+]

现有的FastDFS数据库与python交互, 多是通过下载fdfs-client-py,pip本地安装.
不过该模块只适用于Python2, 且适配FastDFS版本较为古老.

在Python3中, 有相对应的py3fdfs模块

安装

pip install py3Fdfs

 

py3fdfs源于fdfs-client,但在使用过程中, 和旧版略有不同.(py3fdfs官网示例有误)

创建client实例对象的时候不能直接传入配置文件的地址字符串,否则报错.
错误代码:TypeError: type object argument after ** must be a mapping, not str

通过模块内get_tracker_conf函数, 获取配置文件后传入.

例:

from fdfs_client.client import Fdfs_client, get_tracker_conf

tracker_path = get_tracker_conf(/etc/fdfs/client.conf)

client = Fdfs_client(tracker_path)

ret = client.upload_by_filename(./test)

print(ret)

 


!# 上传成功后返回的字典内, 其中‘Remote file_id‘键对应的值由旧版模块string类型更改为byte类型.
则, 返回的文件id是byte类型

如果项目中有自定义上传类, 需要解码返回的文件id为字符串,否则服务器报错.
错误代码:a bytes-like object is required, not ‘str‘

例:

class FastDFSStorage(Storage):
   ‘‘‘自定义上传类‘‘‘
    ...

    def _save(self, name, content):
        ‘‘‘_save方法‘‘‘

        conf_path = get_tracker_conf(./utils/fdfs/client.conf)
        client = Fdfs_client(conf_path)
        result = client.upload_by_buffer(content.read())

        if result.get(Status) != Upload successed.:
            raise Exception(上传文件到FastDFS失败)

        filename = result.get(Remote file_id)
     # return filename
# return str(filename) return filename.decode()

 

Python3与FastDFS交互(py3Fdfs)

原文:https://www.cnblogs.com/jrri/p/11570089.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!