Python开发WebJob/Function App所需文件结构及初始化代码咨询
Python 版 Azure Function App 标准文件结构与初始化代码
你可以通过 Azure Functions Core Tools 执行命令 func init 项目名 --python 直接生成全套基础模板文件,标准项目结构如下:
MyFunctionProj/ ├── .funcignore # 发布时忽略的文件配置,逻辑和.gitignore一致 ├── local.settings.json # 本地开发专属配置,存储连接字符串、测试用环境变量,不会被发布到云端 ├── requirements.txt # 项目依赖声明 ├── host.json # 函数应用全局配置,控制所有函数的运行时、日志、扩展规则 └── HttpTrigger1/ # 单个函数的独立目录,每个函数单独对应一个文件夹 ├── function.json # 当前函数的触发器、输入输出绑定配置 └── __init__.py # 函数业务逻辑入口代码
各关键文件的基础初始化内容如下:
requirements.txt基础依赖配置
azure-functions>=1.17.0 # 其他业务依赖比如 requests、pandas 等按需补充即可
host.json全局基础配置
{ "version": "2.0", "logging": { "applicationInsights": { "samplingSettings": { "isEnabled": true, "excludedTypes": "Request" } } }, "extensionBundle": { "id": "Microsoft.Azure.Functions.ExtensionBundle", "version": "[4.*, 5.0.0)" } }
- HTTP触发类函数的
function.json配置示例
{ "scriptFile": "__init__.py", "bindings": [ { "authLevel": "anonymous", "type": "httpTrigger", "direction": "in", "name": "req", "methods": ["get", "post"] }, { "type": "http", "direction": "out", "name": "$return" } ] }
- 对应
__init__.py初始化代码
import azure.functions as func import logging app = func.FunctionApp() @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 )
Python 版 Azure WebJob 标准文件结构与初始化代码
WebJob 分为连续运行、定时触发两种类型,Python 版标准项目结构如下:
MyWebJob/ ├── run.py # 固定入口执行文件,平台默认会优先执行该文件 ├── requirements.txt # 依赖声明 ├── settings.job # 可选配置,用于指定运行模式、调度规则 └── .webjobignore # 发布时忽略的文件配置
各关键文件的基础初始化内容如下:
settings.job配置示例,定时触发类WebJob需要配置CRON表达式
{ "is_singleton": true, # 多实例部署时仅运行一个实例,避免重复执行 "schedule": "0 */5 * * * *" # CRON表达式,示例为每5分钟执行一次,连续运行类WebJob不需要该字段 }
run.py基础业务代码示例
import logging from datetime import datetime logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) def main(): logger.info(f"WebJob 启动执行,当前时间:{datetime.now()}") # 此处编写业务逻辑,比如处理队列消息、定时清理数据、批量计算等 logger.info("WebJob 执行完成") if __name__ == "__main__": main()
- 自定义启动脚本
run.cmd(可选),如果需要自定义依赖安装、执行参数可以添加该文件
pip install -r requirements.txt python run.py
注意事项
- 本地调试 Function App 可执行
func start命令启动本地服务,WebJob 直接执行python run.py即可测试逻辑 - 部署到云端前请确认对应服务的Python运行时版本和本地开发版本一致,避免依赖兼容问题
内容的提问来源于stack exchange,提问作者user3625533
相关产品推荐
相关产品推荐

