使用 Python 更改 Azure Function 项目中的默认文件夹结构

Change the default folder structure in Azure Function project with Python

我想使用 Azure Functions 创建一个 Python 项目。创建时,文件被分配到默认布局(按照文档中的建议),因此目前我的项目具有以下结构:

root
 | - function_1
 | | - __init__.py
 | | - function.json
 | - function_2
 | | - __init__.py
 | | - function.json
 | - function_N
 | | - __init__.py
 | | - function.json
 | - src
 | | - __init__.py
 | | - logic
 | - host.json
 | - local.settings.json
 | - requirements.txt
 | - tests

问题是N可能比较大(>=10),这样工程会很快变得杂乱。我希望项目具有以下格式,将函数分组到文件夹中(例如,为了版本控制目的,只是为了将它们与代码分开):

root
 | - v0
 | | - function_1
 | | | - __init__.py
 | | | - function.json
 | | - function_N
 | | | - __init__.py
 | | | - function.json
 | - v1
 | | - function_1
 | | | - __init__.py
 | | | - function.json
 | | - function_M
 | | | - __init__.py
 | | | - function.json
 | - src
 | | - __init__.py
 | | - logic
 | - host.json
 | - local.settings.json
 | - requirements.txt
 | - tests

或类似的东西,主要目的是将函数分离到单独的文件夹中。

然而,当我尝试 运行 具有这种布局的项目时,我收到消息说“找不到工作职能”,或“无法找到项目根。希望在项目根中找到 host.json、local.settings.json 之一。",如果我将 host.json 移动到函数文件夹。

有没有办法将项目配置为使用此自定义布局,以便可以从其分组目录中发现函数?

我所有的函数都是 HttpTriggers。

我正在使用 Python3.9.7 和 Visual Studio 代码版本:1.63.2,带有 Visual Studio 代码 v1.6.0

的 Azure Functions 扩展

我更改 Azure Functions 项目的文件夹结构的解决方法之一是:

- 在名为 QueueTriggerFuncs. 的单独文件夹中创建了 1 Http Trigger 和 1 Queue Trigger 的 Azure Functions 项目

- 当我发布这个 Azure Functions 项目时,得到了 Microsoft 文档中显示的相同默认文件夹结构。

- 我试图在 wwwroot 文件夹中手动创建一个文件夹,但它给了我一个名为的错误:

409 Conflict: Cannot delete directory. It is either not empty or access is not allowed. in Azure kudu

因此,在发布项目时我取消选中 Visual Studio 中的 Run from package 设置发布配置文件:

然后发布到Azure Function App.

- 转到 Kudu 控制台 (CMD) - 看到相同的文件夹结构,但这次我能够手动创建文件夹而没有任何错误。

- 将新文件夹创建为 QueueTriggerFuncs - 使用此命令将我的队列触发器函数移动到创建的特定文件夹。

mv FunctionsQ QueueTriggerFuncs

它的格式

mv FunctionFolderName DestinationFolderName

现在这是修改后的文件夹结构,符合预期:

我的 QueueTriggerFuncs 文件夹仅包含特定功能,如队列触发器相关功能。