6

我正在用 django 运行一个应用程序,我想用 celery 来做一些计划任务。

根据官方文档,在我的 settings.py 文件中,我设置了代理传输

BROKER_URL = 'django://'

并将 kombu.transport.django 添加到已安装的应用程序中

INSTALLED_APPS = (
    ....
    'kombu.transport.django',
    ....)

但是,当我尝试使用 同步数据库时,python manage.py syncdb出现以下错误:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 338, in execute_from_command_line
    utility.execute()
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 312, in execute
    django.setup()
  File "C:\Python27\lib\site-packages\django\__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\Python27\lib\site-packages\django\apps\registry.py", line 85, in populate
    app_config = AppConfig.create(entry)
  File "C:\Python27\lib\site-packages\django\apps\config.py", line 119, in create
    import_module(entry)
  File "C:\Python27\lib\importlib\__init__.py", line 37, in import_module
    __import__(name)
ImportError: No module named django

任何想法为什么我得到这个?我已经正确安装了 django,如果我kombu.transport.django从已安装的应用程序中删除,应用程序运行良好。

编辑:这似乎是kombu的问题。我用pip install kombu. 当我尝试导入文件“kombu.transport”时,我没有收到任何错误,但是当我尝试导入“kombu.transport.django”时,出现错误:

ImportError: No module named django
4

2 回答 2

11

虽然它可能发生在您的帖子之后,但 django 模块肯定已从 kombu 包中删除。当前的 celery 文档指出,从 3.1 版开始,celery 可以“开箱即用”地与 Django 一起使用。这意味着您不必修改 settings.py 来集成 celery(所以不要包含对 kombu 的引用)。

在 settings.py 中删除对 kombu 的引用是正确的解决方案。

这是提交:https ://github.com/celery/kombu/commit/65f982ccf31b86157c39a8feb42081410b83abe2

于 2016-11-06T02:37:35.160 回答
1

最新的 celery 删除了对 django 作为代理的支持。他们更喜欢 redis、rabbitmq 作为首选代理。

于 2019-02-01T21:35:23.360 回答