为什么我的gunicorn Python / Flask工作人员退出信号期限?

时间:2017-03-29 21:58:34

标签: python docker flask gunicorn amazon-ecs

我有一个Python / Flask Web应用程序,我通过Gunicorn在Amazon ECS上的docker镜像中部署。一切都很顺利,然后突然,包括最后一次成功的请求,我在日志中看到了这一点:

[2017-03-29 21:49:42 +0000] [14] [DEBUG] GET /heatmap_column/e4c53623-2758-4863-af06-91bd002e0107/ADA [2017-03-29 21:49:43 +0000] [1] [INFO] Handling signal: term [2017-03-29 21:49:43 +0000] [14] [INFO] Worker exiting (pid: 14) [2017-03-29 21:49:43 +0000] [8] [INFO] Worker exiting (pid: 8) [2017-03-29 21:49:43 +0000] [12] [INFO] Worker exiting (pid: 12) [2017-03-29 21:49:43 +0000] [10] [INFO] Worker exiting (pid: 10) ... [2017-03-29 21:49:43 +0000] [1] [INFO] Shutting down: Master

过程消失,程序退出。 ECS然后重新启动服务,并再次运行docker镜像,但同时服务中断。

什么会导致我的程序获得TERM信号?我在网上找不到任何关于这种情况的引用。请注意,这只发生在ECS上的Docker中,而不是本地。

2 个答案:

答案 0 :(得分:1)

事实证明,在向系统添加登录页面后,运行状况检查得到302重定向到/登录/,这是健康状况检查失败。所以容器被定期杀死。亚马逊支持很棒!

答案 1 :(得分:0)

虽然不适用于问题中的问题,但这种行为可能是由容器编排(即 Kubernetes)等外部系统引起的。

例如

  1. 从启动成本高的映像构建的 Pod 开始
  2. 活性探测超时
  3. Kubernetes 发送 sig term 以正常停止容器

在 Kubernetes 场景中,一种解决方案可能是调整 liveness 或就绪探针配置以允许更长的启动时间。