我正在使用django运行一个应用程序,并且我想使用celery来执行一些预定的任务。

根据oficial docs,在我的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,则该应用程序可以正常运行。

编辑:这似乎是海带的问题。我用pip install kombu安装了它。当我尝试导入文件'kombu.transport'时,我没有收到错误,但是当我尝试导入'kombu.transport.django'时,却出现了错误:
ImportError: No module named django

最佳答案

尽管在您发帖后可能已经发生了,但django模块确实已从kombu软件包中删除。 celery的当前文档指出,从3.1版开始,celery与Django兼容。这意味着您无需修改​​settings.py即可集成 celery (因此不必包含对kombu的引用)。

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

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

关于python - celery ,海带和Django-导入错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34679687/

10-11 02:52