子 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
在开始之前,我在 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