最近在研究openstack的swift,在使用python向swift发送http请求的时候,发现有一个问题,在第一次GET之后,拿到了X-Auth-Token,但是,使用这个token去访问的时候 /var/log/swift/proxy.error里面显示有一个编码错误:
Jan 27 17:12:37 server1 proxy-server: STDERR: record.message = record.getMessage() (txn: txf6c5d07b1e2f4d28ab9ac-005a6c4285) (client_ip: 192.168.56.1)
Jan 27 17:12:37 server1 proxy-server: STDERR: File "/usr/lib/python2.7/logging/__init__.py", line 329, in getMessage (txn: txf6c5d07b1e2f4d28ab9ac-005a6c4285) (client_ip: 192.168.56.1)
Jan 27 17:12:37 server1 proxy-server: STDERR: msg = msg % self.args (txn: txf6c5d07b1e2f4d28ab9ac-005a6c4285) (client_ip: 192.168.56.1)
Jan 27 17:12:37 server1 proxy-server: STDERR: UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 41: ordinal not in range(128) (txn: txf6c5d07b1e2f4d28ab9ac-005a6c4285) (client_ip: 192.168.56.1)
显然是编码的问题,但是,按理来说应该是utf-8的编码,应该是不会报错的。上网查了一下,swift在一些环境里面确实是会有这个问题:https://bugs.launchpad.net/swift/+bug/1580678
里面也给了一个解决方案:

在研究Openstack Swift时遇到编码错误,UnicodeDecodeError和account报错。通过查阅资料,尝试修改swift/__init__.py中gettext_函数,但问题依旧存在。最终,发现是proxy-server中server.py文件编码问题,通过加入代码设置默认编码为utf-8解决了UnicodeEncodeError。然而,使用token访问时仍有问题,发现是ring配置问题,通过修改remakerings脚本中的IP并重建ring,成功解决问题。
最低0.47元/天 解锁文章
2836

被折叠的 条评论
为什么被折叠?



