Perdón por el título vago, pero no pude encontrar algo mejor.Reactor retorcido obtener estado actual
¿Hay alguna forma de obtener retorcido el estado actual del reactor? Por estado que quiero decir:
- oyentes en los puertos
- protocolos conectados
- Deferreds que están esperando para ser disparado
- LoopingCalls que ejecutan
- Temas que son "inactivo"
- y otras cosas "activas" ...
Básicamente Estoy tratando de averiguar si el reactor está sentado sin hacer nada. La pregunta en sí es más amplia de lo que realmente necesito hacer, en aras de la plenitud de stackoverflow.
Ahora, mi situación actual es la siguiente:
estoy usando algún otro script que escucha en muchos puertos "dinámicas" que son seleccionados por el guión de esta persona, por lo que no se puede simplemente usar mi script para haga algo como listenTCP o TCP4ServerEndpoint y verifique el estado del mismo. Esto es algo similar al FTP que no es PASV donde cada puerto de escucha se descarta después de cada uso. El otro problema es que mi propio pequeño programa también se ejecuta en el mismo proceso, y lo uso como argumento para iniciar su programa. Básicamente es una interfaz para su programa. Cuando todas sus cosas están hechas Y mis cosas están hechas también, quiero apagar el reactor. Por lo tanto, estoy tratando de averiguar cuándo puedo detener el reactor. Mi condición exacta a la parada es la siguiente:
- Sólo escucha en el puerto 1, y ningún otro.
- No hay deffered ni bucle Llamadas que van a disparar.
Realicé búsquedas pero solo encontré cosas como "if reactor.running" o Stop twisted reactor on a condition, que debe realizar un seguimiento mediante el uso de marcas. Preferiría no tocar su código. Si es algo que podría contribuir a retorcerse, preferiría hacer eso. Pero si ya existe una alternativa, preferiría no volver a inventar la rueda.
¿Tiene que cambiar su script para que notifique a mi script de estas condiciones?
Gracias Glyph por la respuesta. – SleepyMan
Gracias @Glyph por la respuesta. Presione Enter por hábito. Realmente no quería meterme con su código porque mi filosofía está en conflicto con la suya. Pero, ¿cómo iba a integrar mi código con el suyo con IService? Diferentes procesos de comunicación a través de sockets? Bueno, de cualquier forma, le notificaré que su script necesita cambios. Por el momento, intentaré aprender un poco más sobre las partes internas de Twisted antes de contribuir (creo que es bueno aprender sobre la filosofía de Twisted, ¿verdad?). ¿La única forma de aprender estas cosas es leer la fuente o está documentada en alguna parte? – SleepyMan