Django中通过celery完成异步任务

本文介绍如何在Django项目中集成Celery实现异步任务处理,包括环境搭建、配置说明及示例代码,如使用Redis作为消息中间件、定义与调用异步任务等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发环境: Django:1.11

项目布局

安装 celery: pip install celery


异步任务模块 celery_tasks;
异步任务: sms (发送短信);
config: celery异步任务的配置(这里是用来指名异步任务存储的位置);
main: 是整个异步任务的配置
在这里插入图片描述

main.py
在这里插入图片描述

在 config.py配置文件中 :

broker_url = "redis://127.0.0.1/14"

注意:由于这里在定义和配置celery的时候,是已经获取了django的配置,所以可以直接使用redis://127.0.0.1/14 的具体地址,单独使用的话,需要进行相关配置的;参考: http://docs.celeryproject.org/en/latest/getting-started/brokers/redis.html#broker-redis

在 tasks.py中,定义相关的任务:
参考代码:

@app.task 
def add(x, y):
	 return x + y

运行Celery工作服务器

celery -A  项目名  worker --loglevel=info
# 简写
celery -A  项目名  worker  -l  info

调用异步任务

使用 任务名.delay() 即可
比如:

from tasks import add
add.delay(4, 4)

### 在 Django 中使用 Celery 执行异步任务的教程 在 Django 项目中集成 Celery 来执行异步任务是一项常见需求。以下是实现这一目标的具体方法和注意事项。 #### 1. 安装依赖 首先,确保安装了必要的依赖库。可以通过以下命令完成安装: ```bash pip install celery redis django-celery-beat django-celery-results ``` 这些包的作用分别是: - `celery`:核心任务队列库。 - `redis`:作为消息代理(broker)[^1]。 - `django-celery-beat`:用于定时任务调度。 - `django-celery-results`:用于存储任务结果。 #### 2. 配置 CeleryDjango 项目的根目录下创建一个名为 `celery.py` 的文件,并添加以下代码: ```python import os from celery import Celery # 设置 Django 环境变量 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings') app = Celery('your_project') app.config_from_object('django.conf:settings', namespace='CELERY') app.autodiscover_tasks() ``` 在 `__init__.py` 文件中导入该模块以确保 Celery 应用被正确加载: ```python from .celery import app as celery_app __all__ = ('celery_app',) ``` #### 3. 配置 Django 设置 在 `settings.py` 文件中添加以下配置项: ```python CELERY_BROKER_URL = 'redis://localhost:6379/0' CELERY_RESULT_BACKEND = 'redis://localhost:6379/0' CELERY_ACCEPT_CONTENT = ['json'] CELERY_TASK_SERIALIZER = 'json' CELERY_RESULT_SERIALIZER = 'json' CELERY_TIMEZONE = 'UTC' ``` 上述配置指定了 Redis 作为消息代理和结果后端[^1]。 #### 4. 创建任务 在应用目录下创建一个名为 `tasks.py` 的文件,并定义一个简单的任务: ```python from celery import shared_task @shared_task def add(x, y): return x + y ``` #### 5. 启动 Celery Worker 在终端中运行以下命令以启动 Celery 工作进程: ```bash celery -A your_project worker -l info ``` 如果需要使用多线程模式,可以指定 `-P prefork` 参数。注意,某些情况下可能会遇到 `ValueError: not enough values to unpack` 错误[^2],这通常与任务处理逻辑有关,需检查任务函数的输入参数是否正确。 #### 6. 调用任务 在视图或其他地方调用任务: ```python from your_app.tasks import add result = add.delay(4, 6) print(result.get()) # 输出 10 ``` 通过以上步骤,即可在 Django 项目中成功使用 Celery 执行异步任务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值