• Victor Stinner's avatar
    asyncio: sync with Tulip · 47cd10d7
    Victor Stinner yazdı
    Issue #23347: send_signal(), kill() and terminate() methods of
    BaseSubprocessTransport now check if the transport was closed and if the
    process exited.
    
    Issue #23347: Refactor creation of subprocess transports. Changes on
    BaseSubprocessTransport:
    
    * Add a wait() method to wait until the child process exit
    * The constructor now accepts an optional waiter parameter. The _post_init()
      coroutine must not be called explicitly anymore. It makes subprocess
      transports closer to other transports, and it gives more freedom if we want
      later to change completly how subprocess transports are created.
    * close() now kills the process instead of kindly terminate it: the child
      process may ignore SIGTERM and continue to run. Call explicitly terminate()
      and wait() if you want to kindly terminate the child process.
    * close() now logs a warning in debug mode if the process is still running and
      needs to be killed
    * _make_subprocess_transport() is now fully asynchronous again: if the creation
      of the transport failed, wait asynchronously for the process eixt. Before the
      wait was synchronous. This change requires close() to *kill*, and not
      terminate, the child process.
    * Remove the _kill_wait() method, replaced with a more agressive close()
      method. It fixes _make_subprocess_transport() on error.
      BaseSubprocessTransport.close() calls the close() method of pipe transports,
      whereas _kill_wait() closed directly pipes of the subprocess.Popen object
      without unregistering file descriptors from the selector (which caused severe
      bugs).
    
    These changes simplifies the code of subprocess.py.
    47cd10d7
Adı
Son kayıt (commit)
Son güncelleme
Doc Loading commit data...
Grammar Loading commit data...
Include Loading commit data...
Lib Loading commit data...
Mac Loading commit data...
Misc Loading commit data...
Modules Loading commit data...
Objects Loading commit data...
PC Loading commit data...
PCbuild Loading commit data...
Parser Loading commit data...
Python Loading commit data...
Tools Loading commit data...
.bzrignore Loading commit data...
.gitignore Loading commit data...
.hgeol Loading commit data...
.hgignore Loading commit data...
.hgtags Loading commit data...
.hgtouch Loading commit data...
LICENSE Loading commit data...
Makefile.pre.in Loading commit data...
README Loading commit data...
config.guess Loading commit data...
config.sub Loading commit data...
configure Loading commit data...
configure.ac Loading commit data...
install-sh Loading commit data...
pyconfig.h.in Loading commit data...
setup.py Loading commit data...