gpt4 book ai didi

python - 如何修复 Azure Functions 中的 "HostInitializationException"

转载 作者:太空宇宙 更新时间:2023-11-03 20:47:48 25 4
gpt4 key购买 nike

首先,我按照说明运行函数应用程序。 https://learn.microsoft.com/en-us/azure/azure-functions/functions-create-first-function-python

成功创建应用程序后,我将一个小型 HTTP 触发函数部署到 Azure 以进行测试。

我的函数是用Python编写的。我正在使用 Linux 操作系统推送到 Azure。一切看起来都很好。

我使用此语句进行发布:func azure functionapp 发布 myApp --publish-local-settings

成功部署到 Azure 后,我尝试访问“https://myAppName.azurewebsites.net ”,这首先为我提供了一个错误代码为 502 的站点。几分钟后,它的状态发生了变化,我看到了 Azure Functions 的欢迎页面。

如果我尝试通过以下方式直接访问该功能: https://myAppName.azurewebsites.net/api/functionName

我得到了 502.. 即使等待了 30 分钟,该功能仍然无法正确运行..

如果您有相关的有用信息,请告诉我。

看看“Application Insights”中显示的更多信息:

09:55:40 | Trace@(none)
Hosting stopping
09:55:40 | Exception | HostInitializationException@(none)
Did not find functions with language [python].
09:55:40 | Trace@(none)
A host error has occurred
09:55:40 | Trace@(none)
Creating function descriptors.
09:55:40 | Trace@(none)
Adding Function descriptor provider for language python.
09:55:40 | Trace@(none)
1 proxies loaded
import logging

import azure.functions as func


def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')

name = req.params.get('name')
if not name:
try:
req_body = req.get_json()
except ValueError:
pass
else:
name = req_body.get('name')

if name:
return func.HttpResponse(f"Hello {name}!")
else:
return func.HttpResponse(
"Please pass a name on the query string or in the request body",
status_code=400
)


{
"scriptFile": "__init__.py",
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "$return"
}
]
}
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "python"
}
}
{
"version": "2.0"
}

最佳答案

您看到的错误的可能原因是 local.settings.json 文件以及使用 --publish-local-settings 覆盖 Azure Function App 中的设置将其发布到 Azure。

使用以下文件可以在本地托管它并将其发布到 Azure。

本地.settings.json

{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "python",
"AzureWebJobsStorage": "{AzureWebJobsStorage}"
}
}

主机.json

{
"version": "2.0"
}

函数.json

{
"scriptFile": "__init__.py",
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "$return"
}
]
}

init.py

import logging

import azure.functions as func


def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')

name = req.params.get('name')
if not name:
try:
req_body = req.get_json()
except ValueError:
pass
else:
name = req_body.get('name')

if name:
return func.HttpResponse(f"Hello {name}!")
else:
return func.HttpResponse(
"Please pass a name on the query string or in the request body",
status_code=400
)

在 VS Code 中运行以下步骤

func init MyFunctionProj2 (selected Python)
cd .\MyFunctionProj2\
func new (selected HTTP trigger)
func host start

#Pick your region of choice

az functionapp create --resource-group rgname --os-type Linux --consumption-plan-location westeurope --runtime python --name funcappname --storage-account storageaccountname

func azure functionapp publish funcappname

当托管在本地时,它可以使用以下 URL

enter image description here

按照上面列出的步骤发布到 Azure Function 时

enter image description here

您可以在函数中从 Azure 门户获取函数 URL

enter image description here

检查 Function App 设置是否具有正确的存储连接字符串。

Additional documentation reference for local settings file.

希望这有帮助。

关于python - 如何修复 Azure Functions 中的 "HostInitializationException",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56456618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com