gpt4 book ai didi

python/django 生成后台进程并避免僵尸进程

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:58:08 24 4
gpt4 key购买 nike

我需要在 django 中生成一个后台进程, View 立即返回,后台进程继续进行一些更改,然后更新数据库。这是由 os.spawnl() 完成的调用单独的 .py 文件的函数。

问题是后台进程做完后,变成了僵尸函数[python] <defunct> .

我该如何避免这种情况?我关注了thisthis示例,但在 django 渲染过程之后我仍然将子进程作为僵尸。

我想借此机会练习我的 *nix 进程管理技能,所以请帮我一个忙,不要给我 Celery 或其他 mq/async 任务解决方案,我讨厌依赖。

最佳答案

这得等评论了-

wait 系统调用(os.wait 是一个包装器)从死进程中获取退出代码/pids。您将希望在比您的僵尸进程高出一代的进程中 os.wait;僵尸进程的父进程。当其子进程之一死亡时,父进程将收到 SIGCHLD 信号。如果您坚持自己完成所有这些,您将需要安装一个信号处理程序来捕获 SIGCHLD 并在信号处理程序中调用 os.wait。阅读一些关于 unix 进程处理的文档和关于 os 模块的 Python 文档,因为 os.wait 函数的变体将是非阻塞的,这可能会有帮助。

import signal
signal.signal(signal.SIGCHLD, lambda _x,_y: os.wait())

关于python/django 生成后台进程并避免僵尸进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13247956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com