五 Celery 高階用法 20200912

2022-03-21 17:34:50 字數 2045 閱讀 7814

0、獲取原生鏈結後,可以參考官方文件

celery,操作mq,有分為:低層次:py-amqp

,高層次:kombu

1、通過celery,獲取原生的rabbitmq鏈結進行操作

案例:生產者與消費者

#

生產者from django_celery_project import

with conn.channel() as channel:

producer =producer(channel)

from kombu import

exchange, queue

task_queue = queue('

tasks

', exchange('

tasks

'), routing_key='

tasks')

producer.publish(

,retry=true,

exchange=task_queue.exchange,

routing_key=task_queue.routing_key,

declare=[task_queue], #

declares exchange, queue and binds.)#

消費者def

callback(body, message):

print

(body)

message.ack()

from django_celery_project import

task_queue = queue('

tasks

', exchange('

tasks

'), routing_key='

tasks')

with conn.channel() as channel:

consumer = conn.consumer(queues=task_queue, channel=channel)

consumer.register_callback(callback)

with consumer:

conn.drain_events(timeout=1)

2、通過celery獲取鏈結,實現獲取佇列大小

獲取佇列大小的作用,就是在刪除佇列之前一定在判斷佇列還有沒有資料,有資料的話,不能被刪除

from django_celery_project import

#tasks 是佇列名字

print(broker_connection.channel().basic_get('

tasks

', no_ack=false).delivery_info)

print(broker_connection.channel().basic_get('

tasks

', no_ack=false).headers)

執行結果

<==message_count 就是佇列的大小,記得再加上1,才是總的數量
, '

delivery_mode

': 2, '

priority

': 0}

3、通過celery獲取鏈結,刪除佇列和交換介面

from django_celery_project import

broker_connection.channel().exchange_delete(

'tasks

') # 填寫刪除的交換介面

broker_connection.channel().queue_delete(

'tasks

') # 填寫刪除的佇列名字

# 其它定義交換介面,佇列,繫結關係,都在 broker_connection.channel() 進行呼叫

scala入門 (五) scala高階函式用法

前言 上一節對scala的匹配模式,做了乙個大致的介紹。這一節將對scala的高階函式進行乙個入門。作為一門函式式程式語言,想要用好這門語言,scala函式的高階用法還是比較重要的。同樣再介紹相關知識的時候,會和python進行對比。字串高階操作 格式化字串操作 在python中格式字串的方式比較多...

python高階用法 Python高階用法

python高階用法 三元表示式 x 10 y 20 print x if x y else y x 100 y 20 print x if x y else y 列表推導式和生成器 列表推導式 print i for i in range 10 print i 2 for i in range 1...

input高階用法

1.取消按鈕按下時的虛線框 在input裡新增屬性值 hidefocus 或者 hidefocus true 2.唯讀文字框內容 在input裡新增屬性值 readonly 3.防止退後清空的text文件 可把style內容做做為類引用 4.enter鍵可以讓游標移到下乙個輸入框 5.只能為中文 有...