子 python 进程卡住了

Child python process is getting stuck

在开始之前,我在 Python 容器 (AWS Fargate) 中进行所有操作,因此存在一些限制。

我正在使用 Flask 模块来 运行 一个网络服务器,并使用多处理模块生成一个永久子进程来 运行 重复的后台任务。一切正常,但在晚上,子进程随机卡住,没有日志或痕迹。我什至 运行 进行了自定义健康检查以确保它还活着并且它有点像,但它停止工作,CPU 使用率下降而且我不明白发生了什么。它正在进行大量网络调用,但我希望它会在超时时终止,而不是挂起。 CPU 工作时使用率稳定在 ~40%,RAM 稳定在 18%。它可能 运行 超出文件描述符,但为什么会这样?

代码如下所示:

from flask import Flask
from multiprocessing import Process
import time

def poll():
    while True:
        blablabla
        time.sleep(60)

p = Process(target=poll)
p.start()
p.join

app = Flask(__name__)

@app.route('/', methods=['GET'])
def java():
    return app.send_static_file('java.html')

我不能使用任何超时,因为子进程意味着 运行 无限期并且我不能每隔几分钟产生一个新进程,因为容器的内核将 运行 公平地从 PID 中取出很快。我也不知道如何使用 "try",因为它没有失败,只是没有响应。

从技术上讲,我可以 运行 这个子作业的另一个容器,但我想知道是否有更好的解决方案?

谢谢

除非 blahblahblah 退出,否则 poll() 将无限循环,并且您的初始进程将卡在等待永远不会发生的 .join() 上。

https://docs.python.org/3/library/multiprocessing.html#multiprocessing.Process.join