Celery RabbitMQ快速入門

2021-06-19 23:12:14 字數 2639 閱讀 7421

celery官方幫助  

本文主要介紹celery+rabbitmq的入門知識

celery 是乙個非同步任務佇列/基於分布式訊息傳遞作業佇列,它側重於實時操作,同樣也支援排程

rabbitmq為應用程式提供了強大的訊息服務。它很容易使用,適合在雲規模應用,並支援所有主流的作業系統和開發平台。rabbitmq在mozilla公共許可下開源

使用easy_install安裝

sudo easy_install celery

在ubuntu下使用apt-get方式安裝rabbitmq-server

sudo apt-get install rabbitmq-server

安裝完畢之後可以使用如下命令檢視mq當前服務狀態

alex@alex-pc:~/test$ sudo rabbitmqctl status

[sudo] password for alex:

status of node 'rabbit@alex-pc' ...,,

,,

]},, ]

...done.

選擇乙個測試目錄,在當前路徑下新建配置檔案celeryconfig.py,如下:

import sys

import os

sys.path.insert(0, os.getcwd())

celery_imports = ("tasks", )

celery_result_backend = "amqp"

broker_host = "localhost"

broker_port = 5672

broker_user = "guest"

broker_password = "guest"

broker_vhost = "/

新建tasks.py,如下:

from

celery.task

import

task

@task

defadd(x

,y):returnx+

y

在終端中使用如下命令:

alex@alex-pc:~/test$ celeryd --loglevel=info

[2011-07-28 23:06:27,226: warning/mainprocess]

-------------- celery@alex-pc v2.2.7

---- **** -----

--- * *** * -- [configuration]

-- * - **** --- . broker: amqplib://guest@localhost:5672/

- ** ---------- . loader: celery.loaders.default.loader

- ** ---------- . logfile: [stderr]@info

- ** ---------- . concurrency: 2

- ** ---------- . events: off

- *** --- * --- . beat: off

-- ******* ----

--- ***** ----- [queues]

-------------- . celery: exchange:celery (direct) binding:celery

[tasks]

. tasks.add

[2011-07-28 23:06:27,233: info/poolworker-1] child process calling self.run()

[2011-07-28 23:06:27,235: info/poolworker-2] child process calling self.run()

[2011-07-28 23:06:27,236: warning/mainprocess] celery@alex-pc has started.

開啟ipython或者任何python shell即可

in [8]: from celery.task import task

in [9]: import tasks

in [10]: res = tasks.add.delay(2,2)

in [11]: res.ready()

out[11]: true

in [12]: res.result

out[12]: 4

從celeryd的loginfo的輸出資訊中可以看到呼叫成功:

[2011-07-28 23:06:39,081: info/mainprocess] got task from broker: tasks.add[82d8c609-2cac-47e8-be20-eb6a2dc502d6]

[2011-07-28 23:06:39,120: info/mainprocess] task tasks.add[82d8c609-2cac-47e8-be20-eb6a2dc502d6] succeeded in 0.0137050151825s: 4

celery rabbitmq基本使用

版本 celery 4.3,rabbitmq 3.7 一.使用rabbitmq 安裝rabbitmq mac brew install rabbitmq 配置環境變數 bash profile或.profile,注意路徑 export rabbit home usr local cellar rab...

分治 快排 快選

快排模板 include using namespace std const int n 1e5 10 int n,a n void quick sort int q,int l,int r quick sort q,l,j quick sort q,j 1,r intmain 快速選擇演算法 選擇...

快重傳和快恢復

比如傳送方傳送了1,2,3,4四個報文,2 3 4先後到達接收方,由於接收方收到的是三個失序的報文,就會連續發3個ack為1的報文,表示希望收到報文1。當傳送方接收到1個這樣的冗餘報文時,不採取任何措施,直到收到3個冗餘報文,才認定報文1丟失,此時馬上重傳報文1而不是等待1的超時重傳。這就是快重傳。...