2017-04-19 75 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

相关问题