最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python使用pika庫調(diào)用rabbitmq參數(shù)使用詳情

 更新時間:2022年08月31日 15:47:24   作者:IT之一小佬  
這篇文章主要介紹了python使用pika庫調(diào)用rabbitmq參數(shù)使用詳情,文章通過展開文章主題分享了三種方式,具有一定的參考價值,需要的朋友可以參考一下

前言:

python使用pika庫調(diào)用rabbitmq的參數(shù)有三種方式,分別如下所述:

1、應(yīng)答參數(shù)

auto_ack=False
ch.basic_ack(delivery_tag=method.delivery_tag)

生產(chǎn)者模式:

示例代碼:

import pika
 
# 1.連接rabbit
connection = pika.BlockingConnection(pika.ConnectionParameters('192.168.124.104'))
channel = connection.channel()
 
# 2.創(chuàng)建隊列
channel.queue_declare(queue='hello')
 
# 3.向指定隊列插入數(shù)據(jù)
channel.basic_publish(exchange='',  # 簡單模式
                      routing_key='hello',  # 指定隊列
                      body='Hello World!')  # 向隊列中添加的數(shù)據(jù)
 
print(" [x] Sent 'Hello World!'")

運行結(jié)果:

消費者模式:

示例代碼:

import pika
 
# 1.連接rabbit
connection = pika.BlockingConnection(pika.ConnectionParameters('192.168.124.104'))
channel = connection.channel()
 
# 2.創(chuàng)建隊列
# 注意:這一步不是必須的,但是如果消費者先啟動而不是生成者先啟動時,這時隊列中還沒有hello隊列,這時就會報錯
channel.queue_declare(queue='hello')
 
# 3.確定回調(diào)函數(shù)
def callback(ch, method, properties, body):
    print(" [x] Received %r" % body)
    ch.basic_ack(delivery_tag=method.delivery_tag)
 
# 4.確定監(jiān)聽隊列參數(shù)
channel.basic_consume(queue='hello',
                      auto_ack=False,  # 手動應(yīng)答方式
                      on_message_callback=callback)
 
print(' [*] Waiting for messages. To exit press CTRL+C')
# 5.正式監(jiān)聽
channel.start_consuming()

運行結(jié)果:

注意:添加應(yīng)答參數(shù)的好處是當(dāng)消費者處理回調(diào)函數(shù)的時,萬一程序報錯,此時數(shù)據(jù)就會消失的。使用應(yīng)答方式后,消費者程序萬一報錯,修改完程序后重新啟動程序還是可以繼續(xù)消費上一次的數(shù)據(jù)的。使用應(yīng)答參數(shù)后,沒處理完一條數(shù)據(jù)都會給隊列一個反饋消息的,也就是說消費完一條消息后隊列才會刪除這條消息。這種方式效率會降低一些,根據(jù)項目中數(shù)據(jù)的重要性可以選擇是否需要這個參數(shù)。

2、持久化參數(shù)

#聲明queue
channel.queue_declare(queue='hello2', durable=True)  # 若聲明過,則換一個名字
 
channel.basic_publish(exchange='',
                      routing_key='hello2',
                      body='Hello World!',
                      properties=pika.BasicProperties(
                          delivery_mode=2,  # make message persistent
                          )
                      )

生成者方式:

示例代碼:

import pika
 
# 1.連接rabbit
connection = pika.BlockingConnection(pika.ConnectionParameters('192.168.124.104'))
channel = connection.channel()
 
# 2.創(chuàng)建持久化隊列
# 注意:非持久化隊列不能變持久化隊列,反之也是這樣的,所有創(chuàng)建隊列中不能創(chuàng)建和非持久化隊列重名的隊列
channel.queue_declare(queue='hello2', durable=True)
 
# 3.向指定隊列插入數(shù)據(jù)
channel.basic_publish(exchange='',  # 簡單模式
                      routing_key='hello2',  # 指定隊列
                      body='Hello World!',  # 向隊列中添加的數(shù)據(jù)
                      properties=pika.BasicProperties(
                          delivery_mode=2,  # make message persistent
                      )
                      )
print(" [x] Sent 'Hello World!'")

運行結(jié)果:

消費者方式:

示例代碼:

import pika
 
# 1.連接rabbit
connection = pika.BlockingConnection(pika.ConnectionParameters('192.168.124.104'))
channel = connection.channel()
 
# 2.創(chuàng)建持久化隊列
# 注意:非持久化隊列不能變持久化隊列,反之也是這樣的,所有創(chuàng)建隊列中不能創(chuàng)建和非持久化隊列重名的隊列
# 注意:這一步不是必須的,但是如果消費者先啟動而不是生成者先啟動時,這時隊列中還沒有hello2隊列,這時就會報錯
channel.queue_declare(queue='hello2', durable=True)

# 3.確定回調(diào)函數(shù)
def callback(ch, method, properties, body):
    print(" [x] Received %r" % body)
    ch.basic_ack(delivery_tag=method.delivery_tag)
# 4.確定監(jiān)聽隊列參數(shù)
channel.basic_consume(queue='hello2',  # 指定隊列
                      auto_ack=False,  # 手動應(yīng)答方式
                      on_message_callback=callback)
 
print(' [*] Waiting for messages. To exit press CTRL+C')
# 5.正式監(jiān)聽
channel.start_consuming()

運行結(jié)果:

注意:加入持久化參數(shù)的好處,當(dāng)rabbitmq隊列萬一崩了時,此時隊列中的所有數(shù)據(jù)都會丟失,rabbitmq隊列中的數(shù)據(jù)是保存在內(nèi)存中,當(dāng)加入持久化參數(shù)后,數(shù)據(jù)將會保存在硬盤中,rabbitmq崩了或者重啟不會丟失數(shù)據(jù)。

3、分發(fā)參數(shù)

有兩個消費者同時監(jiān)聽一個的隊列。其中一個線程sleep2秒,另一個消費者線程sleep1秒,但是處理的消息是一樣多。這種方式叫輪詢分發(fā)(round-robin)不管誰忙,都不會多給消息,總是你一個我一個。想要做到公平分發(fā)(fair dispatch),必須關(guān)閉自動應(yīng)答ack,改成手動應(yīng)答。使用basicQos(perfetch=1)限制每次只發(fā)送不超過1條消息到同一個消費者,消費者必須手動反饋告知隊列,才會發(fā)送下一個。

channel.basic_qos(prefetch_count=1)

生產(chǎn)者模式:

示例代碼:   【為了產(chǎn)生多條數(shù)據(jù),將此程序執(zhí)行多次】

import pika
 
# 1.連接rabbit
connection = pika.BlockingConnection(pika.ConnectionParameters('192.168.124.104'))
channel = connection.channel()
 
# 2.創(chuàng)建隊列
channel.queue_declare(queue='hello3')
 
# 3.向指定隊列插入數(shù)據(jù)
channel.basic_publish(exchange='',  # 簡單模式
                      routing_key='hello3',  # 指定隊列
                      body='Hello World666!',  # 向隊列中添加的數(shù)據(jù)
                      properties=pika.BasicProperties(
                          delivery_mode=2,  # make message persistent
                      )
                      )
print(" [x] Sent 'Hello World!'")

運行結(jié)果:

消費者模式:

示例代碼1:

import pika
 
# 1.連接rabbit
connection = pika.BlockingConnection(pika.ConnectionParameters('192.168.124.104'))
channel = connection.channel()
 
# 2.創(chuàng)建隊列
# 注意:這一步不是必須的,但是如果消費者先啟動而不是生成者先啟動時,這時隊列中還沒有hello2隊列,這時就會報錯
channel.queue_declare(queue='hello3')
 
# 3.確定回調(diào)函數(shù)
def callback(ch, method, properties, body):
    import time
    time.sleep(15)
    print(" [x] Received %r" % body)
    ch.basic_ack(delivery_tag=method.delivery_tag)
 
# 公平分發(fā),若不加下面這行代碼,默認是輪詢分發(fā)
channel.basic_qos(prefetch_count=1)
 
# 4.確定監(jiān)聽隊列參數(shù)
channel.basic_consume(queue='hello3',  # 指定隊列
                      auto_ack=False,  # 手動應(yīng)答方式
                      on_message_callback=callback)
 
print(' [*] Waiting for messages. To exit press CTRL+C')
# 5.正式監(jiān)聽
channel.start_consuming()

運行結(jié)果:

示例代碼2:

import pika
 
# 1.連接rabbit
connection = pika.BlockingConnection(pika.ConnectionParameters('192.168.124.104'))
channel = connection.channel()
 
# 2.創(chuàng)建隊列
# 注意:這一步不是必須的,但是如果消費者先啟動而不是生成者先啟動時,這時隊列中還沒有hello2隊列,這時就會報錯
channel.queue_declare(queue='hello3')
 
# 3.確定回調(diào)函數(shù)
def callback(ch, method, properties, body):
    import time
    time.sleep(3)
    print(" [x] Received %r" % body)
    ch.basic_ack(delivery_tag=method.delivery_tag)
 
# 公平分發(fā),若不加下面這行代碼,默認是輪詢分發(fā)
channel.basic_qos(prefetch_count=1)
 
# 4.確定監(jiān)聽隊列參數(shù)
channel.basic_consume(queue='hello3',  # 指定隊列
                      auto_ack=False,  # 手動應(yīng)答方式
                      on_message_callback=callback)
 
print(' [*] Waiting for messages. To exit press CTRL+C')
# 5.正式監(jiān)聽
channel.start_consuming()

注意:當(dāng)一個py文件執(zhí)行多次時,會有下面提示:

 運行結(jié)果:

到此這篇關(guān)于python使用pika庫調(diào)用rabbitmq參數(shù)使用詳情的文章就介紹到這了,更多相關(guān)python pika庫調(diào)用 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python開發(fā)加薪利器之Docker的使用實踐

    Python開發(fā)加薪利器之Docker的使用實踐

    docker利用容器技術(shù),獨立運行一個或者一組應(yīng)用,docker是基于go語言開發(fā),docker鏡像好比是一個模版,可以通過這個模版來創(chuàng)建容器服務(wù),今天通過本文給大家分享Docker的使用實踐,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • PyTorch+LSTM實現(xiàn)單變量時間序列預(yù)測

    PyTorch+LSTM實現(xiàn)單變量時間序列預(yù)測

    時間序列是指在一段時間內(nèi)發(fā)生的任何可量化的度量或事件。這篇文章主要為大家介紹了PyTorch+LSTM實現(xiàn)單變量時間序列預(yù)測的相關(guān)資料,需要的可以參考一下
    2023-02-02
  • pytorch 使用單個GPU與多個GPU進行訓(xùn)練與測試的方法

    pytorch 使用單個GPU與多個GPU進行訓(xùn)練與測試的方法

    今天小編就為大家分享一篇pytorch 使用單個GPU與多個GPU進行訓(xùn)練與測試的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python 分享10個PyCharm技巧

    Python 分享10個PyCharm技巧

    這篇文章主要介紹了Python 分享10個PyCharm技巧,今天要跟大家分享幾個PyCharm小技巧,幫助大家提升工作效率!,需要的朋友可以參考下
    2019-07-07
  • pytorch中的hook機制register_forward_hook

    pytorch中的hook機制register_forward_hook

    這篇文章主要介紹了pytorch中的hook機制register_forward_hook,手動在forward之前注冊hook,hook在forward執(zhí)行以后被自動執(zhí)行,下面詳細的內(nèi)容介紹,需要的小伙伴可以參考一下
    2022-03-03
  • python實現(xiàn)音樂播放和下載小程序功能

    python實現(xiàn)音樂播放和下載小程序功能

    這篇文章主要介紹了python實現(xiàn)音樂播放和下載小程序功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • Python刪除指定字符之前或之后所有內(nèi)容的方法

    Python刪除指定字符之前或之后所有內(nèi)容的方法

    本文主要介紹了Python刪除指定字符之前或之后所有內(nèi)容的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Python使用當(dāng)前時間、隨機數(shù)產(chǎn)生一個唯一數(shù)字的方法

    Python使用當(dāng)前時間、隨機數(shù)產(chǎn)生一個唯一數(shù)字的方法

    這篇文章主要介紹了Python使用當(dāng)前時間、隨機數(shù)產(chǎn)生一個唯一數(shù)字的方法,涉及Python時間與隨機數(shù)相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • python-itchat 獲取微信群用戶信息的實例

    python-itchat 獲取微信群用戶信息的實例

    今天小編就為大家分享一篇python-itchat 獲取微信群用戶信息的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python tornado隊列示例-一個并發(fā)web爬蟲代碼分享

    Python tornado隊列示例-一個并發(fā)web爬蟲代碼分享

    這篇文章主要介紹了Python tornado隊列示例-一個并發(fā)web爬蟲代碼分享,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01

最新評論

敦化市| 苏州市| 黎川县| 新乐市| 蓬莱市| 绿春县| 钟山县| 临洮县| 西吉县| 克什克腾旗| 青阳县| 嘉善县| 中宁县| 灌阳县| 达州市| 永泰县| 岚皋县| 正宁县| 科技| 榕江县| 娄底市| 河曲县| 高清| 屯昌县| 阳江市| 天峨县| 灵宝市| 鲁山县| 枣阳市| 台州市| 天等县| 双江| 尚义县| 仁化县| 佛学| 尤溪县| 宁乡县| 磴口县| 广昌县| 渝中区| 和林格尔县|