如何使用django+celery+RabbitMQ实现异步执行

本文详细介绍如何在Django项目中集成Celery进行任务调度,包括安装RabbitMQ、Celery及Django-celery,配置settings.py,定义并调用异步任务,以及启动Celery worker等步骤。

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

1)
安装
需要安装RabbitMQ、Celery和Django-celery
Celery和Django-celery的安装直接pip就好

2)
修改settings.py
在INSTALLED_APPS中加入app:
INSTALLED_APPS = (
...
'djcelery',
'main', # startapp
}

3)
添加RabbitMQ的配置:
import djcelery
djcelery.setup_loader()

BROKER_URL = 'amqp://guest:guest@localhost:5672/'

#或者
#BROKER_HOST = "localhost"
#BROKER_PORT = 5672
#BROKER_USER = "guest"
#BROKER_PASSWORD = "guest"
#BROKER_VHOST = "/"

4)
创建数据库
$ python manage.py syncdb #default
$ python manage.py migrate djcelery #for south

5)
定义和调用tasks
在app(main)目录下新建文件tasks.py
from celery import task

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

6)
开启worker:
$ python manage.py celery worker --loglevel=info
$ #OR
$ python manage.py celeryd -l info --settings=settings

7)
调用任务:
$ python manage.py shell
In [1]: from main.tasks import add

In [2]: a=add.delay(1,1)

In [3]: a.ready() #worker未开启
Out[3]: False

In [4]: a=add.delay(1,1) #开启worker,重新执行

In [5]: a.ready()
Out[5]: True

In [9]: a.get() #Waits until the task is done and returns the retval.
Out[9]: 2

In [10]: a.successful()
Out[10]: True

8)运行index:$ python app.py 8000 ,运行celery:$ python manage.py celeryd -l info --settings=settings

转载于:https://www.cnblogs.com/dengshihuang/p/8250969.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值