通过VS代码部署Azure功能V2:无法查看函数列表

jtjikinw  于 2022-12-30  发布在  其他
关注(0)|答案(1)|浏览(181)

我创建了一个非常简单的Python V2编程模型HttpTrigger,它在我的机器上的Azure函数本地运行时中运行良好。
但当我将其“部署”到Azure功能应用时(Python v2编程模型),我没有看到任何函数被列为已注册。并且调用对应的托管URL路由不起作用,尽管顶级Azure函数应用程序返回其主页,表明Azure认为托管运行时正在运行。函数应用程序存在(并且它从根目录的URL开始工作),但是应用中没有列出任何函数。它说它已经成功部署,但就是没有列出。
其他人有这个问题吗?有没有办法解决?
简单功能应用程序:

@app.function_name(name="HttpTrigger1")
@app.route(route="hello")
def test_function(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}. This HTTP triggered function executed successfully.")
     else:
        return func.HttpResponse(
             "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.",
             status_code=200
        )

接下来我可能会尝试DevOps管道部署,但我更喜欢直接从VS代码部署的简单性。我以前成功地部署过Typescript函数。我可能会尝试这个python项目的旧V1模型,但不希望回到那个模型。
如果有必要的话,我使用的是MacOSX.Python 3.9版的VS代码。

w46czmvw

w46czmvw1#

对于Azure Functions中的Python V2编程模型,在使用VS代码或任何IDE部署时,您将获得函数的空列表。
因为正如我的一个解决方案中所指定的,我们必须在local.settings.json文件中添加一个设置,即AzureWebJobsFeatureFlagsEnableWorkerIndexing.

此外,我还解释了为什么应该在此SO Thread上部署Python编程模型之前添加该设置。
如果有必要的话,我使用的是MacOSX.Python 3.9版的VS代码。
基于Python的Azure Functions在不同操作系统(Windows、Mac OS)上的本地开发存在一些限制,请参阅此MS文档了解更多信息。

相关问题