如何在 Azure App Service 环境中执行长 运行 python 服务总线轮询作业

How to execute a long running python service bus polling job in Azure App Service environment

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

问题是,应用服务正在不断重新启动 post 到 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 端点的基于烧瓶的部署替换此轮询逻辑似乎工作正常。

请帮助我理解我哪里出错了,以及我如何 运行 在 Azure 应用程序服务中 运行 宁独立 python 应用程序

如果您想监视服务总线上的消息,则不需要长轮询网络作业。您可以使用 Azure Functions,它使用 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 设置为连续所需的 AlwaysOn 应用服务,这可能是导致您出现问题的原因。