E:\fastapi>celery -A app.queue.celery_app worker –loglevel=info
Traceback (most recent call last):
File “<frozen runpy>”, line 198, in _run_module_as_main
File “<frozen runpy>”, line 88, in _run_code
File “D:\anaconda3\Scripts\celery.exe\__main__.py”, line 7, in <module>
File “D:\anaconda3\Lib\site-packages\celery\__main__.py”, line 15, in main
sys.exit(_main())
^^^^^^^
File “D:\anaconda3\Lib\site-packages\celery\bin\celery.py”, line 236, in main
return celery(auto_envvar_prefix=”CELERY”)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “D:\anaconda3\Lib\site-packages\click\core.py”, line 1157, in __call__
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File “D:\anaconda3\Lib\site-packages\click\core.py”, line 1078, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File “D:\anaconda3\Lib\site-packages\click\core.py”, line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “D:\anaconda3\Lib\site-packages\click\core.py”, line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “D:\anaconda3\Lib\site-packages\click\core.py”, line 783, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “D:\anaconda3\Lib\site-packages\click\decorators.py”, line 33, in new_func
return f(get_current_context(), *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “D:\anaconda3\Lib\site-packages\celery\bin\base.py”, line 135, in caller
return f(ctx, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^
File “D:\anaconda3\Lib\site-packages\celery\bin\worker.py”, line 348, in worker
worker = app.Worker(
^^^^^^^^^^^
File “D:\anaconda3\Lib\site-packages\celery\worker\worker.py”, line 98, in __init__
self.setup_instance(**self.prepare_args(**kwargs))
File “D:\anaconda3\Lib\site-packages\celery\worker\worker.py”, line 119, in setup_instance
self._conninfo = self.app.connection_for_read()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “D:\anaconda3\Lib\site-packages\celery\app\base.py”, line 821, in connection_for_read
return self._connection(url or self.conf.broker_read_url, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “D:\anaconda3\Lib\site-packages\celery\app\base.py”, line 880, in _connection
return self.amqp.Connection(
^^^^^^^^^^^^^^^^^^^^^
File “D:\anaconda3\Lib\site-packages\kombu\connection.py”, line 201, in __init__
if not get_transport_cls(transport).can_parse_url:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “D:\anaconda3\Lib\site-packages\kombu\transport\__init__.py”, line 91, in get_transport_cls
_transport_cache[transport] = resolve_transport(transport)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “D:\anaconda3\Lib\site-packages\kombu\transport\__init__.py”, line 76, in resolve_transport
return symbol_by_name(transport)
^^^^^^^^^^^^^^^^^^^^^^^^^
File “D:\anaconda3\Lib\site-packages\kombu\utils\imports.py”, line 59, in symbol_by_name
module = imp(module_name, package=package, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “D:\anaconda3\Lib\importlib\__init__.py”, line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “<frozen importlib._bootstrap>”, line 1204, in _gcd_import
File “<frozen importlib._bootstrap>”, line 1176, in _find_and_load
File “<frozen importlib._bootstrap>”, line 1147, in _find_and_load_unlocked
File “<frozen importlib._bootstrap>”, line 690, in _load_unlocked
File “<frozen importlib._bootstrap_external>”, line 940, in exec_module
File “<frozen importlib._bootstrap>”, line 241, in _call_with_frames_removed
File “D:\anaconda3\Lib\site-packages\kombu\transport\redis.py”, line 267, in <module>
class PrefixedStrictRedis(GlobalKeyPrefixMixin, redis.Redis):
^^^^^^^^^^^
AttributeError: ‘NoneType’ object has no attribute ‘Redis’

这个错误的核心是:

AttributeError: ‘NoneType’ object has no attribute ‘Redis’

出现在:

D:\anaconda3\Lib\site-packages\kombu\transport\redis.py

说明 Celery 在尝试使用 Redis 作为消息中间件时,找不到 redis 库中的 Redis,也就是说:

你的环境里 缺少或安装失败了 redis Python 客户端库

解决方案:安装 redis 库

你需要在当前 Python 环境中安装 redis(为了避免版本冲突,强烈建议你加上 Kombu 推荐的版本):

pip install “redis>=4.0,<5.0”

作者 admin

百度广告效果展示