New submission from Shane Harvey <shn...@gmail.com>:
In https://bugs.python.org/issue26741 Popen was changed to emit a ResourceWarning in __del__ if the process is still running. However, when running a daemon/detached process it is completely valid to delete a Popen object before the process is complete. On Windows, a daemon process can be created by using the DETACHED_PROCESS option, eg: import subprocess DETACHED_PROCESS = getattr(subprocess, 'DETACHED_PROCESS', 0x00000008) popen = subprocess.Popen(args, creationflags=DETACHED_PROCESS) print('Running daemon process: ', popen.pid) del popen Unfortunately, the above will emit the warning: C:\python\Python37\lib\subprocess.py:839: ResourceWarning: subprocess 840 is still running ResourceWarning, source=self) Running daemon process: 3212 This makes it complicated to run a daemon process without emitting the resource warning. The best solution I've got is to manually set the Popen.returncode to circumvent the warning, ie: popen = subprocess.Popen(args, creationflags=DETACHED_PROCESS) print('Running daemon process: ', popen.pid) # Set the returncode to avoid erroneous warning: # "ResourceWarning: subprocess XXX is still running". popen.returncode = 0 del popen Running the attached script on Windows only one warning is emitted: $ python.exe -Wall test_daemon_win.py C:\python\Python37\lib\subprocess.py:839: ResourceWarning: subprocess 3584 is still running ResourceWarning, source=self) Running daemon process: 3584 Running daemon process: 1012 I propose that Popen should not raise the resource warning when the creationFlags includes DETACHED_PROCESS. ---------- components: Library (Lib) files: test_daemon_win.py messages: 357237 nosy: ShaneHarvey priority: normal severity: normal status: open title: A subprocess.Popen created with creationFlags=DETACHED_PROCESS on Windows should not emit a ResourceWarning type: behavior versions: Python 3.6, Python 3.7, Python 3.8, Python 3.9 Added file: https://bugs.python.org/file48738/test_daemon_win.py _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue38890> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com