]> granicus.if.org Git - python/commitdiff
bpo-26133: Dont unsubscribe signals in UNIX even loop on interpreter shutdown (#4956)
authorAndrew Svetlov <andrew.svetlov@gmail.com>
Thu, 21 Dec 2017 15:06:46 +0000 (17:06 +0200)
committerGitHub <noreply@github.com>
Thu, 21 Dec 2017 15:06:46 +0000 (17:06 +0200)
Lib/asyncio/unix_events.py
Misc/NEWS.d/next/Library/2017-12-21-11-08-42.bpo-26133.mt81QV.rst [new file with mode: 0644]

index 69c719c32390050347dff86708f66ecc51f535d2..ec767f57d3aa0fd365be51146185273b34143236 100644 (file)
@@ -51,8 +51,14 @@ class _UnixSelectorEventLoop(selector_events.BaseSelectorEventLoop):
 
     def close(self):
         super().close()
-        for sig in list(self._signal_handlers):
-            self.remove_signal_handler(sig)
+        if not sys.is_finalizing():
+            for sig in list(self._signal_handlers):
+                self.remove_signal_handler(sig)
+        else:
+            warinigs.warn(f"Closing the loop {self!r} on interpreter shutdown "
+                          f"stage, signal unsubsription is disabled",
+                          ResourceWarning,
+                          source=self)
 
     def _process_self_data(self, data):
         for signum in data:
diff --git a/Misc/NEWS.d/next/Library/2017-12-21-11-08-42.bpo-26133.mt81QV.rst b/Misc/NEWS.d/next/Library/2017-12-21-11-08-42.bpo-26133.mt81QV.rst
new file mode 100644 (file)
index 0000000..0653d19
--- /dev/null
@@ -0,0 +1 @@
+Don't unsubscribe signals in asyncio UNIX event loop on interpreter shutdown.