【译】Celery文档3:在Django中使用Celery
以下是一个简化的代码示例,展示了如何在Django项目中设置并使用Celery:
# 在你的Django项目的settings.py中添加以下配置
CELERY_BROKER_URL = 'redis://localhost:6379/0' # 指定Redis作为消息代理
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0' # 指定Redis作为结果存储
# 在任何Django app中创建一个tasks.py文件
from __future__ import absolute_import, unicode_literals
from celery import shared_task
@shared_task
def add(x, y):
return x + y
# 在Django的views.py中使用Celery任务
from django.http import JsonResponse
from .tasks import add
def run_celery_task(request):
task = add.delay(4, 4) # 异步执行加法任务
return JsonResponse({'task_id': task.id})
# 确保你的Django项目有celery.py用于启动Celery worker
在这个示例中,我们配置了Celery的消息代理和结果存储后端,并创建了一个简单的加法异步任务。然后在Django视图中触发这个任务并返回任务ID。最后,你需要一个celery.py
文件在Django项目根目录下来启动Celery worker。这个文件通常是这样的:
# celery.py
from __future__ import absolute_import, unicode_literals
from celery import Celery
from django.conf import settings
app = Celery('myproject')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
@app.task(bind=True)
def debug_task(self):
print(f'Request: {self.request!r}') # 打印任务执行的详细信息
在这个文件中,我们初始化了Celery实例,并从Django的配置中加载了配置。然后我们自动发现在Django apps中定义的Celery任务。最后,我们定义了一个调试任务,用于打印任务执行的详细信息。
评论已关闭