容器 test_0_4cb91f00 未响应端口 8000 上的 HTTP ping,站点启动失败。请参阅用于调试的容器日志

Container test_0_4cb91f00 didn't respond to HTTP pings on port: 8000, failing site start. See container logs for debugging

提问人:hamzah jazi 提问时间:11/9/2023 最后编辑:Pravallika KVhamzah jazi 更新时间:11/14/2023 访问量:83

问:

我正在尝试将 Echo 机器人从 botframework 的 microsoft 示例部署到 azure web 应用 (python),每当我在成功部署后尝试测试它时,都会出现错误说

向容器test_0_fea5f125发起预热请求以进行站点测试 2023-11-09T09:25:00.574Z 错误 - 站点测试的容器test_0_fea5f125已退出,站点启动失败 2023-11-09T09:25:00.607Z 错误 - 容器 test_0_fea5f125 未响应端口 8000 上的 HTTP ping,站点启动失败。请参阅容器日志进行调试。

我尝试将 .net Echo 机器人部署到 azure web 应用程序,它运行良好,但 python 没有,我尝试在 azure web 应用程序配置中添加 WEBSITES_PORT = 8000,但仍然出现相同的错误。

https://i.stack.imgur.com/t1l8j.png

python azure azure-web-app-service botframework 聊天机器人

评论


答:

0赞 Pravallika KV 11/10/2023 #1

按照以下步骤创建 Echo Bot 并将其部署到 Azure 应用服务。

  • 引用 MSDOC 并使用以下命令创建了一个 Echo Bot 应用程序
cookiecutter https://github.com/microsoft/BotBuilder-Samples/releases/download/Templates/echo.zip

本地 Bot Framework Emulator 响应:

enter image description here

  • app.py 中修改以下代码
app = web.Application(middlewares=[aiohttp_error_middleware])
app.router.add_post("/api/messages", messages)

if __name__ == "__main__":
    try:
        web.run_app(app, host="0.0.0.0", port=CONFIG.PORT)
    except Exception as error:
        raise error

相反,请添加以下取自 SO 的代码。

  • 感谢@jackygeee的代码:
def init_func(argv):
    APP = web.Application(middlewares=[aiohttp_error_middleware])
    APP.router.add_post("/api/messages", messages)
    return APP
if __name__ == "__main__":
    APP = init_func(None)

    try:
        web.run_app(APP, host="0.0.0.0", port=CONFIG.PORT)
    except Exception as error:
        raise error

更新的解决方案:

要求.txt:

botbuilder-integration-aiohttp>=4.14.0
aiohttp
botbuilder-core
botbuilder-schema
  • 通过运行以下命令在本地创建和激活虚拟环境:
python -m venv env
env\Scripts\activate

enter image description here


  • 创建 Azure 机器人和 Azure 应用服务:Create Azure Bot and Azure App Service
  • 转到 ,通过在消息传递终结点中添加 (https://<webapp_name>.azurewebsites.net/api/messages) 来粘贴 Web 应用的 URL。Azure Bot=> Configuration/api/messages
  • 复制值。Microsoft App ID
  • 单击配置中的“管理密码”,创建新密钥并复制其值(将按照代码使用)。Microsoft App password

enter image description here

  • 创建了一个密钥以将其用作我的应用程序密码

enter image description here

  • 转到 Echo Bot 项目中的 Config.py,然后粘贴如上所述复制的App_IDApp_Password
import os
class DefaultConfig:
    """ Bot Configuration """

    PORT = 3978
    APP_ID = os.environ.get("MicrosoftAppId", "<Your_App_ID>")
    APP_PASSWORD = os.environ.get("MicrosoftAppPassword", "<Your_App-Password")
  • 将应用程序部署到 Azure 应用服务:Deploy the application to Azure App Service:

enter image description here

将应用程序部署到 Azure 后:

  • 导航到 ,添加以下命令:web app=>Settings=> Configuration =>General Settings=> Startup Command
python3 -m aiohttp.web -H 0.0.0.0 -P 8000 app:init_func

enter image description here

  • 转到网上聊天中的 Azure 机器人 =>Settings=>Test 并测试聊天:

enter image description here

评论

0赞 7Leven 11/14/2023
嗨,我正是这样做的,现在收到此错误:应用程序部署正确,但在运行时出现上述错误,并且机器人不响应任何消息。2023-11-14T03:30:04.570355720Z /opt/python/3/bin/python3: Error while finding module specification for 'aiohttp.web' (ModuleNotFoundError: No module named 'aiohttp')
0赞 Pravallika KV 11/14/2023
通过运行 添加和安装模块。botbuilder-integration-aiohttp>=4.14.0aiohttpbotbuilder-corebotbuilder-schemarequirements.txtpip install -r requirements.txt
0赞 Pravallika KV 11/14/2023
@7Leven,检查更新的解决方案。
0赞 7Leven 11/14/2023
好的,我已经更新了我的 ,尽管我不确定如何在虚拟环境中利用您的建议,因为我只是直接使用 .我的应用程序设置也设置为,因此它应该在部署时安装 pip 要求。我仍然收到我在上面发布的错误:requirements.txtaz webapp deployment source config-zip --resource-group $resourceGroup --name $appName --src $srcPathSCM_DO_BUILD_DURING_DEPLOYMENTtrue(ModuleNotFoundError: No module named 'aiohttp')
0赞 Pravallika KV 11/14/2023
您是否在本地安装了这些依赖项?