深入Celery之使用佇列以及優先順序提高響應

2022-08-10 02:15:20 字數 2613 閱讀 8912

多個佇列:

celery預設使用的佇列名為celery預設繫結在direct交換機celery,可通過celery_default_queue/celery_default_exchange/celery_default_routing_key等引數配置修改.

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @date    : 2016-12-24 17:32:54

# @author  : 李滿滿 ([email protected])

# @link    :

# @version : $id$

from__future__importabsolute_import

# 說明: 匯入公共模組

fromkombuimportqueue, exchange

# 說明: 匯入其它模組

# broker_url = 'amqp:'

# celery_result_backend = 'redis:'

broker_url='amqp:'

celery_result_backend='redis:'

celery_task_serializer='msgpack'

celery_result_serializer='json'

celery_task_result_expires=60*60*24

celery_accept_content=['json','msgpack']

celeryd_max_tasks_per_child=40

celery_queues=(

queue(

name='email_queue',

exchange=exchange('email_exchange','direct'),

routing_key='email'),

queue(

name='wixin_queue',

exchange=exchange('wixin_exchange','direct'),

routing_key='wixin'),

)

celery_routes=

}

擴充套件: 多個佇列主要為了解決由於預設子程序池大小有限制,當其中乙個任務訊息量特別大時,那麼其它重要訊息可能會被被滯後處理,導致嚴重影響使用者體驗,可以根據業務實際情況將不同的任務放於不同的佇列中且指定不同的子程序數來提高整體的響應,如上分別定義了繫結到email_exchange的direct交換機的email_queue和繫結到wixin_exchange的direct交換機的wixin_queue

疑問: queue應該是binding到交換機上,為何引數中給出的是routing_key很奇怪...?

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之怎麼讓celery跑起來

celery 官網幫助文件 前言自從發了上次的文章使用celery之深入celery配置,有一些再問我怎麼讓celery跑起來.其實說來也是,celery在新手眼裡真的是比較重量級,不好懂,今天先讓他跑起來吧 本文大部分 和使用方法都可以在celery官網看到 我想要的效果 我想實現乙個定時任務,每...

python之celery簡單使用

參考 celery是乙個簡單 靈活和可靠的分布式任務處理系統。專注實時任務佇列,也支援任務排程。一 celery主要包括四個部分 1 任務排程者,2 中介軟體,傳遞任務 broker 常用的有redis rabbitmq 3 任務執行者 work 4 結果儲存 backend 儲存執行完成的結果,告...