我尝试在Web应用程序中包含任务,但无法开始celery工作。
我的项目结构如下:
网站/网站-> init.py,settings.py,urls.py,wsgi.py
网站/索引-> init.py,celery_app.py,tasks.py
索引是我要在其中运行任务的起始页面。
index / celery_app.py 具有以下代码:
from __future__ import absolute_import, unicode_literals
from celery import Celery
app = Celery('index',
broker='amqp://localhost//',
backend='amqp://',
include=['index.tasks'])
# Optional configuration, see the application user guide.
app.conf.update(
result_expires=3600,
)
if __name__ == '__main__':
app.start()
index / tasks.py :
from __future__ import absolute_import
from .celery_app import app
@app.task
def test_func():
print("Test Background Task")
当我想使用 celery -A索引worker --loglevel = info 启动worker时,出现以下错误:ModuleNotFoundError:没有名为“ celery”的模块。 我在索引文件夹中运行命令提示符。
其他类似问题的解决方案也无济于事。
答案 0 :(得分:1)
您的文件结构有问题。您的celery应用程序应与settings.py
位于同一文件夹中网站/网站-> init.py,settings.py,urls.py,wsgi.py,celery_app.py
网站/索引-> init.py,tasks.py
以及网站文件夹中的init.py也应该具有
from __future__ import absolute_import, unicode_literals
# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from .celery_app import app as celery_app
__all__ = ['celery_app']
答案 1 :(得分:0)
我找到了解决方案。问题是命令提示符。我无法使用“正常”命令提示符。我没有打开普通的conda环境的命令提示符,而是正常运行了。
对于每个想知道您可以在哪里找到提示/术语的人:
打开Anaconda Navigator->环境->选择环境-> 单击箭头->打开终端,然后使用cd导航(如果您 使用Windows)到您想要的位置。
答案 2 :(得分:0)
只写
app = Celery(
"SARyS",
broker='pyamqp://guest:guest@rabbitmq.insertmendoza.com.ar',
include=["SARyS.Apps.TaskManager.Tasks"]
)
答案 3 :(得分:-1)
要安装Celery
pip install -U Celery
或
pip install celery
要以Python导入Celery库
from celery import Celery
测试它是否正常工作
app = Celery('tasks', broker='pyamqp://guest@localhost//')
@app.task
def add(x, y):
return x + y
我希望它会有所帮助。