疑问1:-
我当前正在 celery 用于异步任务。目前在我的计算机上,该功能已传递给8位工作人员。
我想知道需要花费多少时间来处理每个工人的结果。
另外,我听说在celery中,for循环和print语句不起作用,这是真的吗?
疑问2:-
最初,我在Django项目之外尝试了celery,现在我想集成到我的Django项目中。我已经看到,有一个单独的设置芹菜的过程,尤其是在Django中。如果我在Django项目中使用以前的常规芹菜原料,还是必须像创建__int__.py文件等.. 这样,以Django的方式来使用它,它会起作用吗?
我维护了一个 task.py ,然后在 views.py 中从任务中导入该函数,并在 views.py中编写了一个单独的函数,其中使用delay()函数将数据传递到task.py以异步运行。
答案 0 :(得分:0)
关于您的疑问2 :
您是正确的,在您的100
中加入芹菜是必不可少的:
init.py
另一个重要的项目(至少在我学会如何使用Celery方面)是在项目文件夹中添加# __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 import app as celery_app
__all__ = ['celery_app']
并添加类似于以下内容的内容。这些也可以添加到您的celery.py
中,但是我喜欢这种分隔。
settings.py
最后,您的# celery.py
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings')
app = Celery('your_project')
# Using a string here means the worker don't have to serialize
# the configuration object to child processes.
# - namespace='CELERY' means all celery-related configuration keys
# should have a `CELERY_` prefix.
app.config_from_object('django.conf:settings', namespace='CELERY')
# Load task modules from all registered Django app configs.
app.autodiscover_tasks()
将能够理解您的芹菜命令。如果使用此格式,那么您的celery命令需要CELERY_作为前缀。我的示例涉及利用后端服务器容纳芹菜动作。在这里,我展示了如何利用Redis进行此类活动。我的生产示例适用于我目前在Heroku上托管的一个项目。
settings.py