如何在Azure App服务环境中执行长期运行的Python服务总线轮询作业?

问题描述 投票:0回答:1

我对Azure云很陌生,正在Azure python 3.8应用服务中部署一个python后端应用.这是一个独立的应用,它有一个无限循环,从Azure服务总线队列中轮询消息,并做一些相应的操作.请注意,这个应用没有运行在任何常见的Web框架上,如Flask和Django。

问题是,该应用服务在部署到azure云后不断重启。该应用有 中的应用程序.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))

用基于flask的部署替换这个轮询逻辑,有一个hello world端点,似乎可以正常工作。

请帮助我理解我哪里出错了,以及如何在 azure 应用服务中运行一个长期运行的独立 python 应用程序。

python python-3.x azureservicebus azure-web-app-service polling
1个回答
0
投票

如果你想监控服务总线上的消息,你不需要一个很长的轮询网络作业。你可以选择一个 Azure Function,它使用 http 触发器在新消息到达时调用。请参阅 https:/docs.microsoft.comen-usazureazure-functionsfunctions-create-first-azure-function-azure-cli?pivots=programming-language-python&tabs=cmd%2Cbrowser#deploy-the-function-app-project-to-azure。.

这样做会更有效率,因为你可以放弃使用 始终在线 你的webjob所需的App Service被设置为Continous,这可能是导致你的问题的原因。

© www.soinside.com 2019 - 2024. All rights reserved.