mitogen: Handle Python 3.10 threading depreactions

pull/920/head
Alex Willmer 3 years ago
parent caa20be43e
commit 65809a6f0f

@ -386,6 +386,20 @@ def _partition(s, sep, find):
return left, sep, s[len(left)+len(sep):] return left, sep, s[len(left)+len(sep):]
def threading__current_thread():
try:
return threading.current_thread() # Added in Python 2.6+
except AttributeError:
return threading.currentThread() # Deprecated in Python 3.10+
def threading__thread_name(thread):
try:
return thread.name # Added in Python 2.6+
except AttributeError:
return thread.getName() # Deprecated in Python 3.10+
if hasattr(UnicodeType, 'rpartition'): if hasattr(UnicodeType, 'rpartition'):
str_partition = UnicodeType.partition str_partition = UnicodeType.partition
str_rpartition = UnicodeType.rpartition str_rpartition = UnicodeType.rpartition
@ -2758,7 +2772,7 @@ class Latch(object):
return 'Latch(%#x, size=%d, t=%r)' % ( return 'Latch(%#x, size=%d, t=%r)' % (
id(self), id(self),
len(self._queue), len(self._queue),
threading.currentThread().getName(), threading__thread_name(threading__current_thread()),
) )

@ -1236,7 +1236,7 @@ class Broker(mitogen.core.Broker):
def __init__(self, install_watcher=True): def __init__(self, install_watcher=True):
if install_watcher: if install_watcher:
self._watcher = ThreadWatcher.watch( self._watcher = ThreadWatcher.watch(
target=threading.currentThread(), target=mitogen.core.threading__current_thread(),
on_join=self.shutdown, on_join=self.shutdown,
) )
super(Broker, self).__init__() super(Broker, self).__init__()

@ -35,7 +35,6 @@ Support for operating in a mixed threading/forking environment.
import os import os
import socket import socket
import sys import sys
import threading
import weakref import weakref
import mitogen.core import mitogen.core
@ -158,7 +157,7 @@ class Corker(object):
held. This will not return until each thread acknowledges it has ceased held. This will not return until each thread acknowledges it has ceased
execution. execution.
""" """
current = threading.currentThread() current = mitogen.core.threading__current_thread()
s = mitogen.core.b('CORK') * ((128 // 4) * 1024) s = mitogen.core.b('CORK') * ((128 // 4) * 1024)
self._rsocks = [] self._rsocks = []

@ -109,7 +109,8 @@ def get_or_create_pool(size=None, router=None, context=None):
def get_thread_name(): def get_thread_name():
return threading.currentThread().getName() thread = mitogen.core.threading__current_thread()
return mitogen.core.threading__thread_name(thread)
def call(service_name, method_name, call_context=None, **kwargs): def call(service_name, method_name, call_context=None, **kwargs):

@ -1,7 +1,3 @@
import time
import threading
import mock import mock
import testlib import testlib
@ -52,7 +48,7 @@ class DeferSyncTest(testlib.TestCase):
def test_okay(self): def test_okay(self):
broker = self.klass() broker = self.klass()
try: try:
th = broker.defer_sync(lambda: threading.currentThread()) th = broker.defer_sync(lambda: mitogen.core.threading__current_thread())
self.assertEqual(th, broker._thread) self.assertEqual(th, broker._thread)
finally: finally:
broker.shutdown() broker.shutdown()

@ -116,6 +116,13 @@ def threading__thread_is_alive(thread):
return thread.isAlive() return thread.isAlive()
def threading_thread_name(thread):
try:
return thread.name # Available in Python 2.6+
except AttributeError:
return thread.getName() # Deprecated in Python 3.10+
def wait_for_port( def wait_for_port(
host, host,
port, port,
@ -349,7 +356,7 @@ class TestCase(unittest.TestCase):
def _teardown_check_threads(self): def _teardown_check_threads(self):
counts = {} counts = {}
for thread in threading.enumerate(): for thread in threading.enumerate():
name = thread.getName() name = threading_thread_name(thread)
# Python 2.4: enumerate() may return stopped threads. # Python 2.4: enumerate() may return stopped threads.
assert \ assert \
not threading__thread_is_alive(thread) \ not threading__thread_is_alive(thread) \

Loading…
Cancel
Save