Celery的使用

本文介绍了如何在Python项目中安装并配置Celery,包括基本配置如celery.py、task.py和celeryconfig.py,以及如何使用redis作为消息中间件。启动时,Celery会根据指定的模块名寻找配置,可以避免使用celery作为模块名。

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

安装celery
pip install "celery[librabbitmq,redis,msgpack]"

基本配置

主文件celery.py

from __future__ import absolute_import
#拒绝隐式引入,因为celery.py和celery包名冲突
from celery import Celery

app = Celery('proj',include=['proj.task'])
#创建实例,添加task实例(也就是哪个包的哪个文件)
app.config_from_object('proj.celeryconfig')
#从celeryconfi.py加载配置
if __name__ == '__main__':
    app.start()

模块文件task.py

from __future__ import absolute_import

from proj.celery import app

@app.task
#添加任务函数
def add(x,y):
    return x + y

配置文件celeryconfig.py

BROKER_URL = 'amqp://changxin:123456@localhost:5672/web_develop'
#指明rabbitmq作为消息代理
CELERY_RESULT_BACKEND = 'redis://:vrarQht123@localhost:6379/0'
#将结果存储在redis
CELERY_TASK_SERIALIZER = 'msgpack'
#使用msgpack进行序列化和反序列化
CELERY_RESULT_SERIALIZER = 'json'
#使用json读取结果
CELERY_TASK_RESULT_EXPIRES = 60 * 60 *24
#任务过期时间
CELERY_ACCEPT_CONTENT = ['json','msgpack']
#指定接受的内容类型
CELERY_DEFAULT_QUEUE
#配置队列名,这里没有配置

/使用redis的url的格式为redis://:password@hostname:port/db_number/

celery使用redis


启动

celery -A proj worker -l info
会默认寻找-A后面的模块里面的celery.py,但是使用celery做模块名并不好,可以使用其他名字,假如是proj/app.py
celery -A proj.app worker -l info


注意编码# -- coding: utf-8 --

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值