由于项目需要,研究了一下 celery和rabbitmq
首先保证你有python(我用的Python3)
celery部分:
安装celery
pip install celery
然后创建一个tasks.py 文件
from celery import Celery app = Celery('tasks', broker='amqp://guest:[email protected]:5672//') @app.task def add(x, y): return x + y
这样celery 部分就ok了。
-------------------------
rabbitmq 部分:
首先你需要在本地安装docker, 安装过程请自行百度,这里不赘述。
然后 不需要单独pull docker image 直接在本地运行下面docker 指令就会自动启动rabbitmq
docker run -d --name some-rabbit -p 5672:5672 -p 15672:15672 rabbitmq:3-management
接下来 在终端中运行下列命令,开启一个worker(相当于MQ 的消费者)
celery -A tasks worker --loglevel=info
output
(py3env) hostname:test$ celery -A tasks worker --loglevel=info -------------- [email protected] v4.1.0 (latentcall) ---- **** ----- --- * *** * -- Darwin-17.5.0-x86_64-i386-64bit 2018-05-02 17:56:20 -- * - **** --- - ** ---------- [config] - ** ---------- .> app: tasks:0x1024b0f28 - ** ---------- .> transport: amqp://guest:**@127.0.0.1:5672// - ** ---------- .> results: disabled:// - *** --- * --- .> concurrency: 8 (prefork) -- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker) --- ***** ----- -------------- [queues] .> celery exchange=celery(direct) key=celery [tasks] . tasks.add [2018-05-02 17:56:21,248: INFO/MainProcess] Connected to amqp://guest:**@127.0.0.1:5672// [2018-05-02 17:56:21,577: INFO/MainProcess] mingle: searching for neighbors [2018-05-02 17:56:23,798: INFO/MainProcess] mingle: all alone [2018-05-02 17:56:25,158: INFO/MainProcess] [email protected] ready.
扫描二维码关注公众号,回复:
1750290 查看本文章
在开启一个终端,向MQ 添加任务(生产者)
>>> from tasks import add
>>> add.delay(4, 4)
output
>>> from tasks import add >>> add.delay(4,4) <AsyncResult: c2a87cc9-80b3-4525-80c6-6e291c960581> >>> add.delay(4,14) <AsyncResult: 41186edd-95c2-443f-b62a-56a7542cb259>
-------------------------
Flower
最后可以使用flower 来对这个组合进行监控。
安装
pip install flower
或者
easy_install flower
然后输入:
celery flower --broker=amqp://guest:[email protected]:5672//
output
[I 180502 17:22:44 command:139] Visit me at http://localhost:5555 [I 180502 17:22:44 command:144] Broker: amqp://guest:**@127.0.0.1:5672// [I 180502 17:22:44 command:147] Registered tasks: ['celery.accumulate', 'celery.backend_cleanup', 'celery.chain', 'celery.chord', 'celery.chord_unlock', 'celery.chunks', 'celery.group', 'celery.map', 'celery.starmap'] [I 180502 17:22:44 mixins:224] Connected to amqp://guest:**@127.0.0.1:5672//
打开连接
http://localhost:5555 就可以实时监控这个组合了。