Redis 연결을 테스트하기위한 단위 테스트를 작성하고 있습니다. 어떤 시점에서 연결이 실패하고 Python Redis가 RedisConnectionError
을 발생시킬 것으로 예상합니다.Python의 UnicodeDecodeError 연결 오류가 발생하면 Redis가 발생합니다.
그러나 실제로 일어나는 소켓 연결이 실패하고 실제로 (WSACONNECTIONREFUSED) 오류가 발생하지만 텍스트 메시지는 내 로케일 설정을 사용합니다. 메시지는 프랑스어로되어 있습니다.
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)
:하는 UnicodeDecodeError의 원인과 같이
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])
: 그것은 분명히이 코드 조각을 실행하는 상위 계층에 그 오류를보고 시도로
이 파이썬 레디 스에 문제를 일으킬 것 같다
'Aucune connexion n\x92a pu \xeatre \xe9tablie car l\x92ordinateur cible l\x92a express\xe9ment refus\xe9e'
이 :
는 사실, 하나는 실제 오류 메시지가 볼 수 있습니다 나는 비 영어 로켈 인 Python Redis를 사용하는 지구상에서 유일하게 사람이 아니기 때문에 나에게는 이상한 것처럼 보인다. 그러나 인터넷에서 같은 문제를 겪고있는 다른 사람을 찾지 못했습니다.
호출하기 바로 전에 setlocale()
을 사용하여 로케일을 변경하려했지만 메시지는 프랑스어로 남아있었습니다.
거기에 어떤 해결책이 있습니까?
유니 코드로 변환 할 이유가 없습니다. 형식 문자열이 유니 코드이지만 인수가 바이트 문자열 ('u "% s"% '\ x92'') 인 경우 오류가 발생할 것으로 예상됩니다. –