子python进程卡住了

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了子python进程卡住了相关的知识,希望对你有一定的参考价值。

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

我正在使用Flask模块运行Web服务器,并使用多处理模块生成一个永久子进程来运行重复的后台任务。一切正常,但到了晚上,子进程被随机卡住,没有日志或痕迹。我什至运行了一个自定义的运行状况检查,以确保它仍然有效,但是它停止工作,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进程卡住了的主要内容,如果未能解决你的问题,请参考以下文章

与 grep 一起使用时 Python 子进程调用卡住 |

在 Python 多处理进程中运行较慢的 OpenCV 代码片段

当子进程和父进程在 Perl 中写入同一个日志文件时进程卡住(在 Windows 中)

使用 asyncio 将 bash 作为 Python 的子进程运行,但 bash 提示被延迟

Python 子进程挂起命名管道

停止 PabotLib 进程后,Jenkins 工作卡住了