diff options
author | Alex Ungurianu <alex.ungurianu@protonmail.com> | 2022-10-28 22:23:03 +0100 |
---|---|---|
committer | Alex Ungurianu <alex.ungurianu@protonmail.com> | 2022-11-16 22:44:02 +0000 |
commit | 7ade392d22cd37195f52da469ee233d339b20a01 (patch) | |
tree | 3a824a5dd0c9f1a2a57f55f272d745d13089673c | |
parent | e05b50a1d6c04f7e6cf0c82c43e79cfd8520ee2a (diff) | |
download | kazoo-7ade392d22cd37195f52da469ee233d339b20a01.tar.gz |
refactor: remove backport of 'atexit.unregister'
-rw-r--r-- | kazoo/handlers/eventlet.py | 6 | ||||
-rw-r--r-- | kazoo/handlers/gevent.py | 6 | ||||
-rw-r--r-- | kazoo/handlers/threading.py | 6 | ||||
-rw-r--r-- | kazoo/python2atexit.py | 71 | ||||
-rw-r--r-- | kazoo/testing/harness.py | 2 |
5 files changed, 10 insertions, 81 deletions
diff --git a/kazoo/handlers/eventlet.py b/kazoo/handlers/eventlet.py index ebf9898..8869cc5 100644 --- a/kazoo/handlers/eventlet.py +++ b/kazoo/handlers/eventlet.py @@ -1,6 +1,7 @@ """A eventlet based handler.""" from __future__ import absolute_import +import atexit import contextlib import logging @@ -12,7 +13,6 @@ from eventlet.green import selectors as green_selectors from eventlet import queue as green_queue from kazoo.handlers import utils -import kazoo.python2atexit as python2atexit from kazoo.handlers.utils import selector_select LOG = logging.getLogger(__name__) @@ -140,7 +140,7 @@ class SequentialEventletHandler(object): w = eventlet.spawn(self._process_callback_queue) self._workers.append((w, self.callback_queue)) self._started = True - python2atexit.register(self.stop) + atexit.register(self.stop) def stop(self): while self._workers: @@ -148,7 +148,7 @@ class SequentialEventletHandler(object): q.put(_STOP) w.wait() self._started = False - python2atexit.unregister(self.stop) + atexit.unregister(self.stop) def socket(self, *args, **kwargs): return utils.create_tcp_socket(green_socket) diff --git a/kazoo/handlers/gevent.py b/kazoo/handlers/gevent.py index 1c141bc..64d7e83 100644 --- a/kazoo/handlers/gevent.py +++ b/kazoo/handlers/gevent.py @@ -1,6 +1,7 @@ """A gevent based handler.""" from __future__ import absolute_import +import atexit import logging import gevent @@ -19,7 +20,6 @@ except ImportError: from gevent.coros import Semaphore, RLock from kazoo.handlers import utils -from kazoo import python2atexit _using_libevent = gevent.__version__.startswith("0.") @@ -104,7 +104,7 @@ class SequentialGeventHandler(object): for queue in (self.callback_queue,): w = self._create_greenlet_worker(queue) self._workers.append(w) - python2atexit.register(self.stop) + atexit.register(self.stop) def stop(self): """Stop the greenlet workers and empty all queues.""" @@ -124,7 +124,7 @@ class SequentialGeventHandler(object): # Clear the queues self.callback_queue = self.queue_impl() # pragma: nocover - python2atexit.unregister(self.stop) + atexit.unregister(self.stop) def select(self, *args, **kwargs): return selector_select( diff --git a/kazoo/handlers/threading.py b/kazoo/handlers/threading.py index b28bae8..b9acd87 100644 --- a/kazoo/handlers/threading.py +++ b/kazoo/handlers/threading.py @@ -12,13 +12,13 @@ environments that use threads. """ from __future__ import absolute_import +import atexit import logging import queue import socket import threading import time -import kazoo.python2atexit as python2atexit from kazoo.handlers import utils from kazoo.handlers.utils import selector_select @@ -141,7 +141,7 @@ class SequentialThreadingHandler(object): w = self._create_thread_worker(work_queue) self._workers.append(w) self._running = True - python2atexit.register(self.stop) + atexit.register(self.stop) def stop(self): """Stop the worker threads and empty all queues.""" @@ -162,7 +162,7 @@ class SequentialThreadingHandler(object): # Clear the queues self.callback_queue = self.queue_impl() self.completion_queue = self.queue_impl() - python2atexit.unregister(self.stop) + atexit.unregister(self.stop) def select(self, *args, **kwargs): return selector_select(*args, **kwargs) diff --git a/kazoo/python2atexit.py b/kazoo/python2atexit.py deleted file mode 100644 index fdf78d2..0000000 --- a/kazoo/python2atexit.py +++ /dev/null @@ -1,71 +0,0 @@ -"""Uses the old atexit with added unregister for python 2.x -and the new atexit for python 3.x -""" -import atexit -import sys - - -__all__ = ["register", "unregister"] - - -_exithandlers = [] - - -def _run_exitfuncs(): - """run any registered exit functions - - _exithandlers is traversed in reverse order so functions are executed - last in, first out. - """ - - exc_info = None - while _exithandlers: - func, targs, kargs = _exithandlers.pop() - try: - func(*targs, **kargs) - except SystemExit: - exc_info = sys.exc_info() - except: # noqa - import traceback - - sys.stderr.write("Error in atexit._run_exitfuncs:\n") - traceback.print_exc() - exc_info = sys.exc_info() - - if exc_info is not None: - raise exc_info[0](exc_info[1]) - - -def register(func, *targs, **kargs): - """register a function to be executed upon normal program termination - - func - function to be called at exit - targs - optional arguments to pass to func - kargs - optional keyword arguments to pass to func - - func is returned to facilitate usage as a decorator. - """ - if hasattr(atexit, "unregister"): - atexit.register(func, *targs, **kargs) - else: - _exithandlers.append((func, targs, kargs)) - return func - - -def unregister(func): - """remove func from the list of functions that are registered - doesn't do anything if func is not found - - func = function to be unregistered - """ - if hasattr(atexit, "unregister"): - atexit.unregister(func) - else: - handler_entries = [e for e in _exithandlers if e[0] == func] - for e in handler_entries: - _exithandlers.remove(e) - - -if not hasattr(atexit, "unregister"): - # Only in python 2.x - atexit.register(_run_exitfuncs) diff --git a/kazoo/testing/harness.py b/kazoo/testing/harness.py index fa4427f..2d28a5b 100644 --- a/kazoo/testing/harness.py +++ b/kazoo/testing/harness.py @@ -1,10 +1,10 @@ """Kazoo testing harnesses""" +import atexit import logging import os import uuid import unittest -from kazoo import python2atexit as atexit from kazoo.client import KazooClient from kazoo.exceptions import KazooException from kazoo.protocol.connection import _CONNECTION_DROP, _SESSION_EXPIRED |