如何在Azure应用程序服务环境中执行长时间运行的python服务总线轮询作业

2024-04-26 03:29:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Azure云非常陌生,正在Azure python 3.8应用程序服务中进行python后端应用程序部署。 它是一个独立的应用程序,有一个无限循环来轮询来自Azure服务总线队列的消息,并相应地执行一些操作。 请注意,此应用程序不在任何常见的web框架(如Flask和Django)上运行

问题是,应用程序服务在部署到azure云后不断重新启动。应用程序的根文件夹中已存在application.py文件

下面是application.py代码结构:

import os
import time
from flask import Flask
app = Flask(__name__)


def poll_asb_queue():
while True:
    print('I am still polling’)
    # Poll queue logic here
    # Do logic based on the message payload
    time.sleep(5)

### Flow starts here ###
try:
    poll_asb_queue()

except Exception as error:
print('ERROR', str(error))

用具有hello world端点的基于flask的部署替换此轮询逻辑似乎可以正常工作

请帮助我了解哪里出了问题,以及如何在azure app service中运行长期运行的独立python应用程序


Tags: pyimportapp应用程序flasktimeapplicationqueue
1条回答
网友
1楼 · 发布于 2024-04-26 03:29:38

如果希望监视服务总线上的消息,则不需要长时间的轮询web作业。您可以使用Azure函数,该函数使用http触发器在新消息到达时调用。见https://docs.microsoft.com/en-us/azure/azure-functions/functions-create-first-azure-function-azure-cli?pivots=programming-language-python&tabs=cmd%2Cbrowser#deploy-the-function-app-project-to-azure

这将更有效率,因为您可以放弃将webjob设置为Continuous所需的AlwaysOn应用程序服务,这可能是由您的问题的原因造成的

相关问题 更多 >