1. 介绍
Django celery是一个功能强大的Python分布式任务队列,它可以与Django框架完美集成,实现异步任务处理。Celery使用简单,可靠性高,并且支持各种消息传输协议。
2. 安装
在开始使用Django celery之前,需要先安装它。
2.1 在Django项目中安装Django celery
可以通过pip命令在项目的虚拟环境中安装Django celery:
pip install "django-celery==6.4"
3. 配置
在Django项目的设置文件(settings.py)中进行配置。
3.1 配置Celery相关参数
在settings.py文件中添加以下配置:
CELERY_BROKER_URL = 'redis://localhost:6379'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
以上配置使用Redis作为Celery的消息代理(broker)和结果后端(result backend),可以根据需求选择其他消息代理和结果后端。
3.2 配置Django celery
在settings.py文件中添加以下配置:
INSTALLED_APPS = [
...
'django_celery',
...
]
这样,Django celery就会被添加到Django项目的已安装应用中。
4. 使用
在Django中使用Celery非常简单,只需定义一个函数作为Celery任务,然后通过Celery的装饰器将其注册为异步任务。
4.1 定义Celery任务
可以在Django项目的任意一个应用中定义Celery任务,比如在tasks.py中:
from celery import shared_task
@shared_task
def add(x, y):
return x + y
以上代码定义了一个名为add的任务,接受两个参数x和y,并返回它们的和。
4.2 调用Celery任务
调用Celery任务非常简单,可以直接在Django视图中调用:
from myapp.tasks import add
def my_view(request):
result = add.delay(4, 5)
return HttpResponse(result.get())
以上代码中,通过调用add.delay()函数异步执行add任务,并通过result.get()获取任务的结果。
5. 进阶使用
除了基本的任务执行外,Django celery还支持以下进阶功能:
5.1 定时任务
使用Django celery可以轻松实现定时任务。
from celery.schedules import crontab
from myapp.tasks import my_task
app.conf.beat_schedule = {
'my_task': {
'task': 'myapp.tasks.my_task',
'schedule': crontab(minute='*/15'),
'args': (10, 20),
},
}
以上代码指定了一个名为my_task的定时任务,该任务每15分钟执行一次,并传递参数10和20给my_task函数。
5.2 并行任务
使用Django celery可以方便地实现并行任务,提高处理效率。
from celery import group
from myapp.tasks import task1, task2, task3
g = group(task1.s(), task2.s(), task3.s())
g.apply_async()
以上代码创建了一个并行任务组,并通过apply_async()方法异步执行任务组。
6. 总结
Django celery是一个功能强大的Python分布式任务队列,在Django项目中使用非常方便。通过Celery装饰器可以简单地定义和调用异步任务,而且还支持定时任务和并行任务等进阶功能。使用Django celery可以提高任务处理效率,提升系统性能。