How to make Apache/mod_python process collect its zombies?

Apache/2.2.6 (Unix) DAV/2 mod_python/3.2.8 Python/2.4.4 configured ...

One of apache processes spawns some long-running python script asynchronously, and apparently doesn't seem to collect its child process table entry. After that long-run-in-subprocess python script finishes - defunct python process has been left.

# ps -ef | grep httpd
root     23911     1  0 Oct15 ?        00:00:01 /usr/sbin/httpd
qa       23920 23911  0 Oct15 ?        00:00:00 /usr/sbin/httpd

# ps -ef | grep python
qa       28449 23920  0 12:38 ?        00:00:00 [python] <defunct>

What is the way to make the Apache process to collect its children? Is it possible to do the job via a mod_python request handler ( like PythonCleanupHandler for example)?


Asked by: Lenny543 | Posted: 27-01-2022

Answer 1

Drop mod_python in favor of mod_wsgi (is used for wsgi), which does not leave orphaned zombies around afaik.

Answered by: Alberta384 | Posted: 28-02-2022

Answer 2

File a bug report.

EDIT: I'm serious. Leaving zombies behind is a bug, and there is almost certainly nothing you can do from within Python.

Upgrade to the latest versions, look for bug reports, post on the mailing list, switch to another product.

Answered by: Freddie380 | Posted: 28-02-2022

Similar questions

Still can't find your answer? Check out these communities...

PySlackers | Full Stack Python | NHS Python | Pythonist Cafe | Hacker Earth | Discord Python