芹菜4.0.0:没有这样的运输:django

aco*_*aco 3 python django celery

我遵循Celery 4.0.0的"Django的第一步"教程:http: //docs.celeryproject.org/en/latest/django/first-steps-with-django.html

这一切都按预期工作.但是,如果我尝试将传输从AMQP更改为Django ORM,则将其添加到以下结尾settings.py:

CELERY_BROKER_URL = 'django://'
Run Code Online (Sandbox Code Playgroud)

然后当我运行worker process(celery -A proj worker)时,我收到一个错误:

Traceback (most recent call last):
  File "/home/ac/src/proj/.pyenv/bin/celery", line 11, in <module>
    sys.exit(main())
  File "/home/ac/src/proj/.pyenv/local/lib/python2.7/site-packages/celery/__main__.py", line 14, in main
    _main()
  File "/home/ac/src/proj/.pyenv/local/lib/python2.7/site-packages/celery/bin/celery.py", line 326, in main
    cmd.execute_from_commandline(argv)
  File "/home/ac/src/proj/.pyenv/local/lib/python2.7/site-packages/celery/bin/celery.py", line 488, in execute_from_commandline
    super(CeleryCommand, self).execute_from_commandline(argv)))
  File "/home/ac/src/proj/.pyenv/local/lib/python2.7/site-packages/celery/bin/base.py", line 278, in execute_from_commandline
    return self.handle_argv(self.prog_name, argv[1:])
  File "/home/ac/src/proj/.pyenv/local/lib/python2.7/site-packages/celery/bin/celery.py", line 480, in handle_argv
    return self.execute(command, argv)
  File "/home/ac/src/proj/.pyenv/local/lib/python2.7/site-packages/celery/bin/celery.py", line 412, in execute
    ).run_from_argv(self.prog_name, argv[1:], command=argv[0])
  File "/home/ac/src/proj/.pyenv/local/lib/python2.7/site-packages/celery/bin/worker.py", line 221, in run_from_argv
    return self(*args, **options)
  File "/home/ac/src/proj/.pyenv/local/lib/python2.7/site-packages/celery/bin/base.py", line 241, in __call__
    ret = self.run(*args, **kwargs)
  File "/home/ac/src/proj/.pyenv/local/lib/python2.7/site-packages/celery/bin/worker.py", line 255, in run
    **kwargs)
  File "/home/ac/src/proj/.pyenv/local/lib/python2.7/site-packages/celery/worker/worker.py", line 99, in __init__
    self.setup_instance(**self.prepare_args(**kwargs))
  File "/home/ac/src/proj/.pyenv/local/lib/python2.7/site-packages/celery/worker/worker.py", line 120, in setup_instance
    self._conninfo = self.app.connection_for_read()
  File "/home/ac/src/proj/.pyenv/local/lib/python2.7/site-packages/celery/app/base.py", line 732, in connection_for_read
    return self._connection(url or self.conf.broker_read_url, **kwargs)
  File "/home/ac/src/proj/.pyenv/local/lib/python2.7/site-packages/celery/app/base.py", line 808, in _connection
    'broker_connection_timeout', connect_timeout
  File "/home/ac/src/proj/.pyenv/local/lib/python2.7/site-packages/kombu/connection.py", line 179, in __init__
    if not get_transport_cls(transport).can_parse_url:
  File "/home/ac/src/proj/.pyenv/local/lib/python2.7/site-packages/kombu/transport/__init__.py", line 81, in get_transport_cls
    _transport_cache[transport] = resolve_transport(transport)
  File "/home/ac/src/proj/.pyenv/local/lib/python2.7/site-packages/kombu/transport/__init__.py", line 62, in resolve_transport
    raise KeyError('No such transport: {0}'.format(transport))
KeyError: u'No such transport: django'
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Wit*_*ail 7

您可以将其用作结果后端,但不能再作为经纪人使用.

支持的经纪人列表在芹菜项目网站上.

在您关注的教程页面中,您可以选择使用django ORM作为结果后端:

扩展django-celery-results - 使用Django ORM/Cache作为结果后端

django-celery-results扩展使用Django ORM或Django Cache框架提供结果后端.

有关如何执行此操作的完整说明位于页面的此处..

简短回答 - Django ORM不再是经纪人,它已在4.0版中删除.

  • 我创建了一个 Celery 错误报告,文档现在已经更正。 (2认同)