我正在尝试从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
答案 0 :(得分:0)
请按照tutorial进行Python中的Azure队列存储,代码的步骤如下所示。
这是代码。
# 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。
希望它有所帮助。