我现在正在使用python,celery和rabbitmq,我遇到了一些麻烦。
我有一个带有命名空间ipynbsrv.wui
的主django应用程序,此外我还有三个我在项目中引用的包 - 也是由我编写的 - 安装在系统中。他们使用相同的根名称空间(即ipynbsrv.module1
,ipynbsrv.module2
等。)
这一切都可以自行解决。但是,当我尝试从ipynbsrv.wui.tasks
(celery -A ipynbsrv -n w1.%h --autoscale=20,3 --autoreload worker &
)
我总是收到像
这样的错误from ipynbsrv.module1.utils import ClassLoader
ImportError: No module named module1.utils
所以在我看来,就像芹菜正在搜索这个模块的当前项目,而不是采用系统上安装的那个。
ipynbsrv.wui.celery.py:
from __future__ import absolute_import
import os
from celery import Celery
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ipynbsrv.settings')
app = Celery('ipynbsrv',
broker='amqp://guest:guest@localhost',
backend='rpc',)
# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object('django.conf:settings')
我还添加了
from __future__ import absolute_import
到每个 init .py
每个提示都受到赞赏。