Azure Function部署后运行返回413请求实体过大错误求助
Azure Function部署后运行报413错误解决方案
你遇到的413错误大概率不是真的请求体积过大,毕竟你生成的CSV文件只有300多字节,优先按照以下步骤排查解决:
1. 确认报错真实来源
你在「代码+测试」页面看到的413错误,基本都是门户测试请求的报错,不是函数实际定时运行的报错。Timer触发器的测试需要传入符合格式的调度payload,直接在门户点测试按钮发送的默认请求不符合要求,才会返回413错误。
你需要到函数应用的「监视器」菜单下,查看实际定时触发的运行日志,或者查看关联的Application Insights日志,获取真实的运行错误信息。
2. 修正代码中的路径拼接错误
你的代码直接用字符串拼接临时目录和文件名,不同环境下临时目录的结尾是否带路径分隔符是不确定的,会导致文件写入/读取到错误的路径,引发运行异常。
请引入os模块,使用os.path.join拼接路径,修改后的代码片段如下:
import os import logging import azure.functions as func import numpy as np import pandas as pd from datetime import datetime from azure.storage.blob import BlobClient import tempfile def main(mytimer: func.TimerRequest) -> None: logging.info('Python trigger function.') temp_path = tempfile.gettempdir() dateTimeObj = datetime.now() timestampStr = dateTimeObj.strftime("%d%b%Y%H%M%S") filename =f"{timestampStr}.csv" # 修正路径拼接逻辑,兼容不同操作系统的路径规则 file_path = os.path.join(temp_path, filename) df = pd.DataFrame(np.random.randn(5, 3), columns=['Column1','Column2','Colum3']) df.to_csv(file_path, index=False) blob = BlobClient.from_connection_string( conn_str="你的连接字符串", container_name="container2", blob_name=filename) with open(file_path, "rb") as data: blob.upload_blob(data)
3. 清理requirements.txt依赖配置
你的依赖文件存在多处冗余和冲突问题,会导致部署时依赖安装异常,函数加载失败:
- 重复声明了两次
azure-storage-blob==12.8.1,需要删掉重复条目 logging是Python标准库,不需要额外安装,直接删掉- 第三方
DateTime包会和Python标准库的datetime模块冲突,你的代码用的是标准库的datetime,直接删掉该依赖 backports.tempfile是Python 2的兼容包,Python 3的tempfile是标准库自带的,直接删掉
清理后的requirements.txt内容如下:
# Do not include azure-functions-worker as it may conflict with the Azure Functions platform azure-functions azure-storage-blob==12.8.1 numpy==1.19.3 pandas==1.3.0
4. 优化敏感信息配置
不要硬编码存储账户连接字符串在代码中,建议将连接字符串存储到函数应用的「配置」-「应用程序设置」中,命名为AZURE_BLOB_CONN_STR,代码中通过环境变量读取:
conn_str = os.environ.get("AZURE_BLOB_CONN_STR")
5. 添加异常日志方便排查
在函数逻辑中添加try-except捕获,打印完整的异常栈到日志,方便后续快速定位问题:
def main(mytimer: func.TimerRequest) -> None: try: # 原有业务逻辑 except Exception as e: logging.error(f"函数运行失败: {str(e)}", exc_info=True) raise
按照以上步骤调整后重新发布函数,查看实际运行日志即可定位解决问题。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

