问题描述
我的server是使用sanic框架,所以在链接redis时使用了asyncio-reids来进行链接,当redis没设置密码时server没有任何问题,但在redis设置了密码后,在链接时就出现了问题
问题出现的环境背景及自己尝试过哪些方法
我看源代码中注释是说密码使用bytes类型,所以我尝试过用b'xxxx'
和bytes('hehe',encoding='utf-8')
的方式进行配置链接,但总是在源代码断言assert not password or isinstance(password, encoder.native_type)
处抛异常,并且我打印了encoder.native_type
发现是<class 'type'>
,但password是<class 'bytes'>
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
# redis链接代码
self._pool = await asyncio_redis.Pool.create(
host=REDIS_CONFIG['host'],
port=REDIS_CONFIG['port'],
poolsize=10,
password=b'curlatira22',
db=REDIS_CONFIG['db'],
# 异常
Traceback (most recent call last):
File "/Users/apple/PycharmProjects/myenv3/lib/python3.7/site-packages/sanic/app.py", line 917, in handle_request
response = await response
File "/Users/apple/PycharmProjects/vpn_project/report_data.py", line 67, in index
await record(key, raws)
File "/Users/apple/PycharmProjects/vpn_project/report_data.py", line 73, in record
rds = await redis.get_redis_pool()
File "/Users/apple/PycharmProjects/vpn_project/report_data.py", line 42, in get_redis_pool
db=REDIS_CONFIG['db'],
File "/Users/apple/PycharmProjects/myenv3/lib/python3.7/site-packages/asyncio_redis/pool.py", line 63, in create
protocol_class=protocol_class)
File "/Users/apple/PycharmProjects/myenv3/lib/python3.7/site-packages/asyncio_redis/connection.py", line 68, in create
connection_lost_callback=connection_lost, loop=connection._loop)
File "/Users/apple/PycharmProjects/myenv3/lib/python3.7/site-packages/asyncio_redis/protocol.py", line 783, in __init__
assert not password or isinstance(password, encoder.native_type)
当使用字符串进行密码配置时又出现以下异常:
source_traceback: Object created at (most recent call last):
File "/Users/apple/PycharmProjects/vpn_project/report_data.py", line 84, in <module>
app.run(host='0.0.0.0', port=8000, debug=True, access_log=True)
File "/Users/apple/PycharmProjects/myenv3/lib/python3.7/site-packages/sanic/app.py", line 1096, in run
serve(**server_settings)
File "/Users/apple/PycharmProjects/myenv3/lib/python3.7/site-packages/sanic/server.py", line 770, in serve
loop.run_forever()
File "/Users/apple/PycharmProjects/myenv3/lib/python3.7/site-packages/asyncio_redis/protocol.py", line 850, in connection_made
ensure_future(initialize(), loop=self._loop)
Traceback (most recent call last):
File "/Users/apple/PycharmProjects/myenv3/lib/python3.7/site-packages/asyncio_redis/protocol.py", line 840, in initialize
yield from self.select(self.db)
File "/Users/apple/PycharmProjects/myenv3/lib/python3.7/site-packages/asyncio_redis/protocol.py", line 676, in wrapper
result = yield from method(protocol_self, _NoTransaction, *a, **kw)
File "/Users/apple/PycharmProjects/myenv3/lib/python3.7/site-packages/asyncio_redis/protocol.py", line 1137, in _query
result = yield from self._get_answer(transaction, answer_f, _bypass=_bypass, call=call)
File "/Users/apple/PycharmProjects/myenv3/lib/python3.7/site-packages/asyncio_redis/protocol.py", line 1064, in _get_answer
result = yield from answer_f
asyncio_redis.exceptions.ConnectionLostError: None
你期待的结果是什么?实际看到的错误信息又是什么?
请问我该如何写才能解决这个问题?
改向拥抱了aioredis...