Redis への接続をテストするための単体テストをいくつか書いています。ある時点で、接続が失敗し、Python Redis がRedisConnectionError
.
ただし、基になるソケット接続が失敗し、実際にエラー (WSACONNECTIONREFUSED) が発生しますが、テキスト メッセージは私のロケール設定を使用します。メッセージはフランス語です。
このコードを実行している上位層にそのエラーを報告しようとするため、Python Redis に問題が発生するようです。
def _error_message(self, exception):
# args for socket.error can either be (errno, "message")
# or just "message"
if len(exception.args) == 1:
return "Error connecting to %s:%s. %s." % \
(self.host, self.port, exception.args[0])
else:
return "Error %s connecting to %s:%s. %s." % \
(exception.args[0], self.host, self.port, exception.args[1])
次のように、UnicodeDecodeError が発生します。
File "F:\environment\lib\site-packages\redis-2.8.1.a-py2.7.egg\redis\connection.py", line 312, in send_command
self.send_packed_command(self.pack_command(*args))
File "F:\environment\lib\site-packages\redis-2.8.1.a-py2.7.egg\redis\connection.py", line 294, in send_packed_command
self.connect()
File "F:\environment\lib\site-packages\redis-2.8.1.a-py2.7.egg\redis\connection.py", line 236, in connect
raise ConnectionError(self._error_message(e))
File "F:\environment\lib\site-packages\redis-2.8.1.a-py2.7.egg\redis\connection.py", line 261, in _error_message
(exception.args[0], self.host, self.port, exception.args[1])
UnicodeDecodeError: 'ascii' codec can't decode byte 0x92 in position 18: ordinal not in range(128)
実際、実際のエラー メッセージは次のとおりです。
'Aucune connexion n\x92a pu \xeatre \xe9tablie car l\x92ordinateur cible l\x92a express\xe9ment refus\xe9e'
英語以外のロケールである Python Redis を使用しているのは地球上で私だけではない可能性が高いため、これは奇妙に思えます。しかし、同じ問題に直面している人をインターネット上で見つけることができませんでした。
setlocale()
電話の直前にロケールを変更しようとしましたが、メッセージはフランス語のままでした。
そこにはどのような解決策がありますか?