celery+rabbitmq(Docker) quick start

由于项目需要,研究了一下 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 就可以实时监控这个组合了。




猜你喜欢

转载自blog.csdn.net/pcjdpcq/article/details/80169451
今日推荐