如何在Linux环境的Azure WebApp中定时运行Python后台任务
Azure Linux WebApp 定时运行Python脚本解决方案
方法一:使用Azure WebJobs(官方推荐)
这是Azure WebApp官方适配的后台任务方案,能直接复用WebApp的Python环境与依赖,适配Linux场景。
创建并配置WebJob
- 打包脚本与依赖:将Python脚本和包含
pysftp、pandas的requirements.txt放在同一目录,压缩为zip包(确保脚本在zip根目录,无嵌套文件夹)。 - 登录Azure门户进入目标WebApp,左侧菜单找到部署中心→WebJobs,点击添加。
- 填写配置项:
- 名称:自定义(如
data-transform-task) - 上传文件:选择打包好的zip包
- 类型:定时触发
- 触发器:选CRON表达式,输入
0 */4 * * *(每4小时执行一次) - 运行模式:连续
- 名称:自定义(如
- 打包脚本与依赖:将Python脚本和包含
处理依赖安装
WebJobs会自动读取requirements.txt安装依赖,若安装失败,可通过WebApp的**高级工具(Kudu)**打开SSH终端,进入WebJob目录手动执行:python -m pip install -r requirements.txt日志排查
在WebJobs列表点击对应任务,进入日志标签页查看执行记录,定位问题。
方法二:修正crontab配置(解决此前失败问题)
Linux WebApp默认禁用crontab,需先开启,同时注意路径与环境变量问题:
启用crontab支持
- 在WebApp的配置→应用设置中,添加
WEBSITE_ENABLE_CRONJOBS,值设为true,保存后重启WebApp。 - 通过Kudu的SSH终端登录,执行
crontab -e编辑定时任务。
- 在WebApp的配置→应用设置中,添加
编写正确的定时规则
输入以下内容(替换为你的脚本绝对路径和Python环境路径):0 */4 * * * /usr/bin/python3 /home/site/wwwroot/your_transform_script.py >> /home/site/wwwroot/cron_exec_log.log 2>&1注意:
- 用
which python3在SSH终端获取WebApp环境的Python绝对路径。 - 脚本必须用绝对路径,避免相对路径导致找不到文件。
- 追加日志输出,方便排查执行异常。
- 用
验证配置
执行crontab -l确认任务已添加,到触发时间后查看cron_exec_log.log检查执行状态。
方法三:使用Azure Functions(独立任务场景)
若脚本无需依赖WebApp环境,可单独创建Azure Functions实现定时触发:
- 创建定时触发的Python函数,CRON表达式设为
0 */4 * * *。 - 在函数的
requirements.txt中添加pysftp、pandas等依赖。 - 将数据转换逻辑迁移到函数的
__init__.py中。 - 函数会自动按定时执行,日志可在Azure门户的函数监控模块查看。
内容的提问来源于stack exchange,提问作者eohb_omni
相关产品推荐
相关产品推荐

