簡體   English   中英

偵聽來自Python的Web作業的Azure隊列消息

[英]listen to azure queue message from python fro web job

我正在嘗試從python中的工作人員角色收聽azure隊列。 有沒有辦法編寫僅在收到新消息時才觸發的函數? 適用於Visual Studio的Python工具的模板代碼為:

if __name__ == '__main__':
while True:
    #
    # Write your worker process here.
    #
    # You will probably want to call a blocking function such as
    #    bus_service.receive_queue_message('queue name', timeout=seconds)
    # to avoid consuming 100% CPU time while your worker has no work.
    #
    sleep(1.0)

我可以看到服務bu有一個偵聽功能,但我找不到一個隊列API

請遵循Python中Azure隊列存儲的教程 ,以及代碼的步驟,如下所示。

  1. 獲取隊列長度以判斷要處理還是等待片刻
  2. 如果隊列長度大於0,請出隊或僅查看消息以進行處理。

這是代碼。

# Step 1: Get the count of messages in a queue
metadata = queue_service.get_queue_metadata('taskqueue')
count = metadata.approximate_message_count
if count > 0:
   # Step 2: Process messages
   # Dequeue messages
   messages = queue_service.get_messages('taskqueue')
   # Or peek messages, `messages = queue_service.peek_messages('taskqueue')`
   for message in messages:
       print(message.content) # process message like print
       queue_service.delete_message('taskqueue', message.id, message.pop_receipt)

sleep(1.0)

同時,僅建議使用另一種方法代替webjob,您可以考慮如下使用在Python中使用帶有隊列存儲觸發器的Azure Function應用程序,請參考本教程

在此處輸入圖片說明

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM