我按照以下url中给出的示例来使用Flask运行芹菜:
http://flask.pocoo.org/docs/0.12/patterns/celery/
我一字不漏地遵循了一切。唯一的区别是,我的make_celery函数是在以下层次结构下创建的:
package1|
|------CeleryObjCreator.py
|
CeleryObjectCraetor.py在CeleryObjectCreatorClass下有make_celery函数,如下所示:
from celery import Celery
class CeleryObjectHelper:
def make_celery(self, app):
celery = Celery(app.import_name, backend=app.config['CELERY_RESULT_BACKEND'],
broker=app.config['CELERY_BROKER_URL'])
celery.conf.update(app.config)
TaskBase = celery.Task
class ContextTask(TaskBase):
abstract = True
def __call__(self, *args, **kwargs):
with app.app_context():
return TaskBase.__call__(self, *args, **kwargs)
celery.Task = ContextTask
return celery
现在,我正面临着启动芹菜工人的问题。 在文章的最后,它建议启动芹菜工作者如下:
$ celery -A your_application.celery worker
就我而言,我正在使用<>对于不起作用的your_application字符串,它会出现以下错误:
ImportError:没有名为" package1.celery'
的模块
所以我不确定your_application字符串的值应该是什么来启动芹菜工作者。
根据Nour Chawich的建议,我尝试从命令行运行Flask应用程序。我的服务器确实成功了。 此外,由于app是我的项目结构中app.py所在的目录,在app.py代码中,我用flask_app = Flask(name)替换app = Flask(name)以分隔出变量名称 但是当我尝试使用命令
启动芹菜工人时celery -A app.celery -loglevel=info
它无法识别我的代码中的以下导入
import app.myPackage as myPackage
它会抛出以下错误
ImportError: No module named 'app'
所以我真的不确定这里发生了什么。任何想法?