Python版Azure Function Blob Trigger运行卡滞及__init__.py疑问求助
解决Azure Functions Python Blob Trigger卡主问题及__init__.py说明
一、init.py的明确要求
Python版Azure Functions必须要有__init__.py,而且要放在包含function.json的函数目录里。这是官方明确规定的,不用纠结论坛的不同说法——没有这个文件,函数宿主根本识别不了你的Python函数。
二、解决"Host lock lease acquired"卡主问题
这条日志说明函数宿主已经启动,但Blob Trigger没正常触发,按以下步骤排查:
- 检查存储账户连接字符串:确认
local.settings.json里的AzureWebJobsStorage配置正确。本地开发用存储模拟器的话,填UseDevelopmentStorage=true;用云存储账户就复制完整的连接字符串,别填错账户名或密钥。 - 核对Blob Trigger路径:打开
function.json,检查path字段的容器名、路径格式是否正确,比如要监听test-container下的文件,就写test-container/{name}。 - 确认存储模拟器状态:如果用本地模拟器,先确保它已经启动——要么双击模拟器exe,要么在命令行跑
az storage emulator start。 - 验证函数代码位置:你的模板代码必须放在__init__.py里,标准模板代码应该是这样:
import logging import azure.functions as func def main(myblob: func.InputStream): logging.info(f"Python blob trigger function processed blob \n" f"Name: {myblob.name}\n" f"Blob Size: {myblob.length} bytes")
- 检查host.json配置:默认的host.json别乱改,确保包含扩展包配置,示例如下:
{ "version": "2.0", "logging": { "applicationInsights": { "samplingSettings": { "isEnabled": true, "excludedTypes": "Request" } } }, "extensionBundle": { "id": "Microsoft.Azure.Functions.ExtensionBundle", "version": "[4.*, 5.0.0)" } }
- 重启函数宿主:有时候缓存会搞事,停止函数后重新启动,或者删掉项目根目录下的
.azurefunctions文件夹再运行。
三、正确的文件夹结构参考
本地开发的Python Azure Functions结构应该是这样:
项目根目录 ├── .azurefunctions/ ├── 你的BlobTrigger函数文件夹/ │ ├── __init__.py │ └── function.json ├── local.settings.json └── host.json
如果你的函数文件夹里缺__init__.py,直接创建文件并把模板代码放进去就行。
内容的提问来源于stack exchange,提问作者academy_courses2021
相关产品推荐
相关产品推荐

