问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-04-07 11:30

我来回答

3个回答

懂视网 时间:2022-04-07 15:51

第一步:下载并安装Erlang

原因:RabbitMQ服务器端代码是使用Erlang语言编写的,它依赖于Erlang运行。

下载地址:http://www.erlang.org/downloads

1564714417858245.png

根据本机系统的位数选择合适的版本。双击下载好的安装包,开始安装。

1564714111(1).png

1564714130(1).png

安装完成后要配置环境变量,在系统环境变量中新建。

1564714156(1).png

变量名:ERLANG_HOME

变量值就是刚才erlang的安装地址,点击确定。

然后双击系统变量path

1564714176(1).png

点击“新建”,将%ERLANG_HOME%in加入到path中。

1564714193(1).png

最后windows键+R键,输入cmd,再输入erl,看到版本号就说明erlang安装成功了。

1564714831580378.jpeg

热心网友 时间:2022-04-07 12:59

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

热心网友 时间:2022-04-07 14:17

插件安装
不要立刻下载这个url中的那个链接,要先根据你想要更新目标的rabbitmq版本再去另外一个地方下载相应插件,如:

会列出两大版本的插件目录(选择对应目录进入下载,否则会报错...):

插件如何安装?
进入rabbitmq安装目录,进入plugins目录,将上面这个ez文件拷贝到plugins目录中,然后运行命令来enable这个插件
centos下,默认路径在:/usr/lib/rabbitmq/lib/rabbitmq_server-3.3.4/plugins(版本号可能会变化)
windows下,默认路径在:C:\Program Files\RabbitMQ Server\rabbitmq_server-3.3.4\plugins(版本号可能会变化)
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
“泛览周王传”的出处是哪里 避事的意思是什么 怠息的意思是什么 “偷闲来此一嚬呻”的出处是哪里 怠息意思和来源是什么 客厅中间沙发旁旁边放什么 客厅沙发旁边放什么合适 沙发左右摆什么位置 淘宝网无法注册邮箱验证 谁能帮我注册一个谷歌帐号,我一直注册不成功,淘宝上也买不到,在线等... 未使用住房公积金贷款的如何提取住房公积金 购了房,未贷款, 如何支取住房公积金? 扣扣昵称女生简单气质有哪些? 未使用住房公积金贷款的如何提取住房公积金? 呼叫限制红米的怎么接触,求解 红米手机 呼叫限制 要怎么设置 红米note3 呼叫限制怎么解 红米2机的呼叫限制怎么解除 - 信息提示 红米note8pro怎么解除呼叫限制? 请问红米4x呼叫限制怎么解除 提示你已设置呼叫限制 红米呼叫限制怎么设置 红米手机解除呼叫限制 红米4怎么解除呼叫限制? 红米手机呼叫限制怎么解除 如何解除红米手机通话限制? 红米如何解除呼叫限制 红米note8的解除通话限制? 红米K40游戏增强版呼叫限制怎么解除? 唯品花取现怎么显示还款失败但银行卡里的钱已被扣? 女朋友意外怀孕她决定不要心情不好怎么安慰她? 女朋友怀孕应该怎么安慰 女友可能意外怀孕 怎么安慰 我女朋友意外怀孕了,我们不能要,请问怎么样才能安抚她的情绪和给她一个郑重的道歉, 女朋友怀孕了要怎么安慰她? 我女友怀孕了该如何安慰 女朋友怀孕了该怎么安慰她 男孩,2017年正月初八生起名 父亲姓李蛇年正月初八出生,男孩梓字辈,求帮忙取名 2015年羊年正月初八申时出生的男孩陈姓取名宝典 《血战阿拉曼》免费在线观看完整版高清,求百度网盘资源 求《血战阿拉曼》影片资源下载 谁看过电影《血战阿拉曼》 <血战阿拉曼》讲的是什么 哪里有意大利电影《血战阿拉曼》的下载? 有关《沙漠兄弟连》(又名《血战阿拉曼》)的问题 老电影血溅阿拉曼 兄弟连和沙漠兄弟连一样吗,是一个片吗? 有哪些好看的战争电影 电影血战阿拉曼结局