跳到主要内容

celery执行异步任务

在Django中使用celery可以实现异步执行任务的功能。以下是在Django中使用celery的步骤:

第一步:配置celery.py文件​

在Django项目的根目录dx_movie/dx_movie下新建celery.py文件,并将以下配置信息复制进去:

dx_movie/dx_movie/celery.py
import os

from celery import Celery

# Set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dx_movie.settings')

app = Celery('dx_movie')

# Using a string here means the worker doesn'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 apps.
app.autodiscover_tasks()


@app.task(bind=True, ignore_result=True)
def debug_task(self):
print(f'Request: {self.request!r}')

第二步:导入celery.py文件​

在dx_movie/dx_movie/__init__.py全局配置的初始化文件中,导入celery.py, 代码如下:

dx_movie/dx_movie/__init__.py
import pymysql
from .celery import app as celery_app

pymysql.install_as_MySQLdb()

__all__ = ('celery_app',)

第三步:配置settings.py文件​

在Django项目的settings.py中添加以下配置信息:

dx_movie/dx_movie/settings.py
# settings.py
# 配置Celery
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/1'
CELERY_TIMEZONE = "Asia/Shanghai"
CELERY_TASK_TRACK_STARTED = True
CELERY_TASK_TIME_LIMIT = 30 * 60

第四步:编写任务​

🔒 试读结束

继续阅读完整内容

以上为免费预览。前往「Django + Vue 全栈课程」,查看后续完整讲解、案例演示和配套资料。

查看课程详情