从web作业中收听来自python的azure队列消息

时间:2017-04-19 11:43:41

标签: python azure queue azure-webjobs

我正在尝试从python中的worker角色中侦听azure队列。 有没有办法编写一个只在新消息来临时触发的函数? 使用Python Tools for Visual Studio的模板代码是:

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

1 个答案:

答案 0 :(得分:0)

请按照tutorial进行Python中的Azure队列存储,代码的步骤如下所示。

  1. 获取队列长度以判断处理或等待片刻
  2. 如果队列长度大于0,则出列队列或仅查看要处理的消息。
  3. 这是代码。

    # 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功能应用程序,如下所示,请参阅此tutorial

    enter image description here

    希望它有所帮助。

相关问题