asyncio-redis 使用b'xxxx'来链接密码失败.

问题描述

我的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

你期待的结果是什么?实际看到的错误信息又是什么?

请问我该如何写才能解决这个问题?

阅读 2.4k
1 个回答

改向拥抱了aioredis...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题