Celery多佇列配置

2021-10-02 06:45:04 字數 2166 閱讀 3385

專案結構

/proj

-__init__

-celeryconfig.py #celery的配置檔案

-tasks.py #celery編寫任務檔案

#coding:utf-8

from __future__ import absolute_import

from celery import celery

'proj'

, include=

['proj.tasks'])

#例項化celery物件

'proj.celeryconfig'

)#引入配置檔案

if __name__ ==

'__main__'

:

)

tasks.py

'''

'''#coding:utf-8

from __future__ import absolute_import

)def

add(x, y)

:return x + y

celeryconfig.py

#coding:utf-8

from kombu import queue

broker_url =

'amqp:'

# 使用rabbitmq作為訊息**

celery_result_backend =

'redis:'

# 把任務結果存在了redis

celery_task_serializer =

'msgpack'

# 任務序列化和反序列化使用msgpack方案

celery_result_serializer =

'json'

# 讀取任務結果一般效能要求不高,所以使用了可讀性更好的json

celery_task_result_expires =60*

60*24# 任務過期時間,不建議直接寫86400,應該讓這樣的magic數字表述更明顯

celery_accept_content =

['json'

,'msgpack'

]# 指定接受的內容型別

celery_queues =

(#設定add佇列,繫結routing_key

queue(

'add'

, routing_key=

'xue.add'),

)celery_routes =

}

啟動

在proj的上層目錄輸入

發布任務

from proj.tasks import add

add.delay(2,

3)

多佇列中需要修改的地方

celery_queues =

(#設定add佇列,繫結routing_key

queue(

'add'

, routing_key=

'xue.add'),

)celery_routes =

配置兩個佇列

'''

'''# 配置佇列

celery_queues =

( queue(

'default'

, routing_key=

'default'),

queue(

'佇列1'

, routing_key=

'key1'),

queue(

'佇列2'

, routing_key=

'key2'),

)# 路由(哪個任務放入哪個佇列)

celery_routes =

,'任務2':,

}

celery使用多佇列

usr bin env python3 coding utf 8 from celery import celery import settings pw settings.session redis password celery broker redis s localhost 6379 0 p...

celery清空佇列

本人在使用python celery佇列時,有時候需要清空佇列,但是python celery似乎並沒有清空佇列的api 至少我沒找到 所以使用redis cli工具進行佇列清空 使用redis cli工具,命令如下,在終端直接輸入 redis cli n 15 ltrim transcode 0 ...

Celery任務佇列

使用任務佇列作為分發任務的機制。乙個任務佇列的輸入是一組被稱為任務的工作單元。專用的工人會持續監聽任務佇列來等待完成新的工作。celery通過訊息進行通訊,通常使用中間人作為客戶端和工人 workers 間的媒介。為了初始化一項任務,客戶端會新增一條訊息到佇列中,然後中間人傳遞這條訊息給乙個work...