使用 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
文件夹仅包含特定功能,如队列触发器相关功能。
我想使用 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
文件夹仅包含特定功能,如队列触发器相关功能。