在Django应用程序中设置Celery

2023-04-11 00:00:00 django 设置 应用程序
  1. 安装Celery

使用pip安装Celery:

pip install Celery
  1. 创建Celery实例

在Django项目的主目录下,创建一个名为celery.py的文件,并添加以下代码:

import os
from celery import Celery

# 设置默认Django settings模块
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings')

app = Celery('your_project')

# 从Django的默认配置中加载Celery配置
app.config_from_object('django.conf:settings', namespace='CELERY')

# 自动发现任务文件
app.autodiscover_tasks()

其中,your_project为你的Django项目的名称。

  1. 配置Celery启动参数

在Django项目的settings.py文件中,添加以下配置代码:

# Celery配置
CELERY_BROKER_URL = 'redis://localhost:6379/0' # 使用Redis作为消息代理
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0' # 把任务结果存在Redis
CELERY_TIMEZONE = 'Asia/Shanghai' # 设置时区

其中,CELERY_BROKER_URLCELERY_RESULT_BACKEND为使用的Redis的地址和端口号。

  1. 创建Celery任务

在Django应用程序中,创建一个tasks.py文件,并书写以下代码:

from celery import shared_task

@shared_task
def hello_world():
    print('Hello World!')

该示例使用了装饰器shared_task将该函数注册为Celery任务。

  1. 在视图函数中调用Celery任务

在你的Django应用程序中,创建一个视图函数,并添加以下代码:

from django.http import HttpResponse
from your_app.tasks import hello_world

def index(request):
    hello_world.delay() # 调用Celery任务
    return HttpResponse('Hello, Celery!')

当我们请求该视图函数时,会异步调用Celery任务hello_world()

  1. 启动Celery Worker

在Django项目的根目录下,运行以下代码来启动Celery Worker:

celery -A your_project worker -l info

其中,your_project为你的Django项目名称。

至此,已经完成了在Django应用程序中设置Celery的步骤。

相关文章