mirror of
https://github.com/django/daphne.git
synced 2025-07-14 18:02:17 +03:00
Channels expects multiprocessing.Value for port.
This commit is contained in:
parent
df2d7bed94
commit
d38c292040
|
@ -132,18 +132,9 @@ class DaphneProcess(multiprocessing.Process):
|
||||||
# prefer `type(None)` over `lambda x: None` for serialization in spawn mode
|
# prefer `type(None)` over `lambda x: None` for serialization in spawn mode
|
||||||
self.setup = setup or type(None)
|
self.setup = setup or type(None)
|
||||||
self.teardown = teardown or type(None)
|
self.teardown = teardown or type(None)
|
||||||
# ready event isn't really needed when blocking on Queue.get() but Channels calls into it
|
self.port = multiprocessing.Value("i")
|
||||||
self.ready = multiprocessing.Event()
|
self.ready = multiprocessing.Event()
|
||||||
self.errors = multiprocessing.Queue()
|
self.errors = multiprocessing.Queue()
|
||||||
self.__port = None
|
|
||||||
self.__portqueue = multiprocessing.Queue()
|
|
||||||
|
|
||||||
@property
|
|
||||||
def port(self):
|
|
||||||
# lazy load the port so we don't block the main process waiting
|
|
||||||
if self.__port is None:
|
|
||||||
self.__port = self.__portqueue.get()
|
|
||||||
return self.__port
|
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
# Note: MacOS uses spawn by default since Python 3.8.
|
# Note: MacOS uses spawn by default since Python 3.8.
|
||||||
|
@ -192,9 +183,7 @@ class DaphneProcess(multiprocessing.Process):
|
||||||
from twisted.internet import reactor
|
from twisted.internet import reactor
|
||||||
|
|
||||||
if self.server.listening_addresses:
|
if self.server.listening_addresses:
|
||||||
port = self.server.listening_addresses[0][1]
|
self.port.value = self.server.listening_addresses[0][1]
|
||||||
self.__portqueue.put(port)
|
|
||||||
# ready event isn't really needed when blocking on queue.get() but Channels calls into it
|
|
||||||
self.ready.set()
|
self.ready.set()
|
||||||
else:
|
else:
|
||||||
reactor.callLater(0.1, self.resolve_port)
|
reactor.callLater(0.1, self.resolve_port)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user