提问人:hamzah jazi 提问时间:11/9/2023 最后编辑:Pravallika KVhamzah jazi 更新时间:11/14/2023 访问量:83
容器 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
问:
我正在尝试将 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,但仍然出现相同的错误。
答:
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 响应:
- 在 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
- 创建 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
- 创建了一个密钥以将其值用作我的应用程序密码:
- 转到 Echo Bot 项目中的 Config.py,然后粘贴如上所述复制的App_ID和App_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:
将应用程序部署到 Azure 后:
- 导航到 ,添加以下命令:
web app=>Settings=> Configuration =>General Settings=> Startup Command
python3 -m aiohttp.web -H 0.0.0.0 -P 8000 app:init_func
- 转到网上聊天中的 Azure 机器人 =>Settings=>Test 并测试聊天:
评论
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.0
aiohttp
botbuilder-core
botbuilder-schema
requirements.txt
pip install -r requirements.txt
0赞
Pravallika KV
11/14/2023
@7Leven,检查更新的解决方案。
0赞
7Leven
11/14/2023
好的,我已经更新了我的 ,尽管我不确定如何在虚拟环境中利用您的建议,因为我只是直接使用 .我的应用程序设置也设置为,因此它应该在部署时安装 pip 要求。我仍然收到我在上面发布的错误:requirements.txt
az webapp deployment source config-zip --resource-group $resourceGroup --name $appName --src $srcPath
SCM_DO_BUILD_DURING_DEPLOYMENT
true
(ModuleNotFoundError: No module named 'aiohttp')
0赞
Pravallika KV
11/14/2023
您是否在本地安装了这些依赖项?
评论