в надежде выяснить, почему мой реактор не остановится? В своем конструкторе потоков я пробовал реактор.startRunning (False) и реактор.run (). В команде запуска для этого потока я периодически используюrator. Любой отзыв об этом будет потрясающим :)
В качестве альтернативы, что еще можно заменить на это, совместимое с использованием сервера и ресурса twisted.internet для настройки / прослушивания порта? Или, может быть, что-то, что может заменить как реактор, так и витой интернет?
class DatePage(resource.Resource):
def __init__(self, date_string):
resource.Resource.__init__(self)
self.date_str = str(date_string)
def render_GET(self, request):
request.responseHeaders.addRawHeader(b"content-type", b"application/json")
return get_json().encode('utf-8')
class PageFactory(resource.Resource):
def getChild(self, date_string, request):
return DatePage(date_string)
class ControlThread(threading.Thread):
def __init__(self, control_queue, stop_event):
threading.Thread.__init__(self)
self.control_queue = control_queue
self.stop_event = stop_event
self.site = server.Site(PageFactory())
self.port = reactor.listenTCP(host_port, self.site)
reactor.startRunning(False)
def run(self):
while not self.stop_event.is_set():
try:
self.process_command(self.control_queue.get_nowait())
reactor.iterate()
except queue.Empty:
pass
time.sleep(0.001)
reactor.iterate()
sys.stderr.write("reactor.stop()\n")
self.port.stopListening()
reactor.callFromThread(reactor.stop)
# reactor_thread.join()
while reactor.running:
print("running")
time.sleep(0.1)
if not reactor.running:
print("STOPPED!!")
Редактировать: добавлен пример. Проблема в ControlThread, другие классы для фона.