You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fly.io部署Python脚本遇Exit Code:0与Unhealthy allocations问题排查

Fly.io部署Python周期性任务失败:Exit Code:0与Unhealthy allocations问题解决

问题描述

尝试在Fly.io部署一个循环打印当前周数的Python周期性任务脚本,部署时出现Exit Code: 0和Unhealthy allocations错误,实例多次重启后失败。已尝试修改Procfile进程为worker、调整requirements.txt、修改time.sleep时长,均未解决。

原因分析

  • 进程类型与健康检查不匹配:使用web进程类型时,Fly.io会强制对其进行TCP/HTTP健康检查,但该脚本是后台worker任务,并未监听8080端口,导致健康检查失败,进程被判定为不健康。
  • 冗余配置触发错误检查:fly.toml中保留了针对HTTP服务的[[services]]配置,这些配置会持续对非HTTP服务执行健康检查,最终导致实例被终止重启。
  • 进程退出误解:Exit Code:0表示脚本本身执行无错误,但Fly.io因健康检查不通过主动终止进程,导致循环重启直至超出重试次数。

解决方案

将任务配置为worker进程,移除不必要的健康检查和服务配置,让Fly.io将其作为后台长期运行任务处理。

1. 修改Procfile

将进程类型从web改为worker,明确后台任务属性:

worker: python db_script.py

2. 调整fly.toml配置

删除所有[[services]]相关配置,移除PORT环境变量,添加processes指定运行worker进程:

# fly.toml file generated for withered-snowflake-645 on 2023-02-05T04:28:07+05:30
app = "withered-snowflake-645"
kill_signal = "SIGINT"
kill_timeout = 5
processes = ["worker"]  # 指定运行worker进程
[build]
  builder = "paketobuildpacks/builder:base"
[experimental]
  auto_rollback = true

3. 重新部署并验证

执行部署命令:

fly deploy

查看运行日志确认任务状态:

fly logs

部署成功后,日志会每隔5秒打印当前周数,实例状态保持running,无重复重启记录。

内容的提问来源于stack exchange,提问作者ArcticTern

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 15:35:51