2017-04-19 71 views
0

我想從python中的worker角色監聽azure隊列。 有沒有辦法編寫一個函數,只有當一個新的消息即將到來時纔會觸發? 與Python的工具Visual Studio中的模板代碼爲:聆聽來自python的web工作的azure隊列消息

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

回答

0

請按照tutorial對於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,你可以考慮使用具有隊列存儲觸發Azure的功能應用在Python如下,請參閱本tutorial

enter image description here

希望它能幫助。

+0

感謝您的回答,功能應用程序可以適用於長時間運行的任務謊言nlp分析? – royi

+0

@royi不,我想。 Function Apps是一個無服務器的Web框架,我不認爲將它用於NLP分析(如Python中的NLTK)並不是一個好主意。 –

+0

Python在功能應用程序中仍受實驗支持。沒有在生產環境中使用。 – SILENCE

相關問題