2016-05-02 7 views
1

Ich habe einen Tornado-Server mit einigen Websockethandlern. Ich möchte einen Pool von Arbeitern schaffen, um einen Arbeiter als Kindprozess zu starten und eine Websocket-Verbindung zum Arbeiter herzustellen. Nachdem der Arbeiter fertig ist, sollte er eine Antwort an den Kunden senden.Wie wird WebSocket in Python Tornado an den Child-Prozess übergeben?

def worker(message): 
    inp_dict = json.loads(message) 
    t = inp_dict["time"] 
    time.sleep(t) 
    return "Hello, World! "*int(t) 

class WebSocket(tornado.websocket.WebSocketHandler): 
    def check_origin(self, origin): 
     return True 

    def open(self): 
     print("WebSocket opened") 

    def on_message(self, message):  
     self.write_message(worker(message)) 

    def on_close(self): 
     print("WebSocket closed") 

Wie geht das?

Antwort

1

Verbindungen zwischen Prozessen Passing wird nicht unterstützt. Lassen Sie stattdessen die Verbindungen im Hauptprozess und verwenden Sie z. a multiprocessing.Queue um einfache Objekte (einfache alte Daten) hin und her zu den Child-Prozessen zu senden.

+0

Vielen Dank. Wie kann man die Antwort von einem Kindprozess an den Websocket-Client senden? –

+0

Zum Beispiel wie im obigen Codefragment. Wie sende ich die Nachricht an den Websocket-Client von dem Arbeiter, der als Kindprozess gestartet wurde? –

+0

Im obigen Fragment sind keine untergeordneten Prozesse vorhanden. Bitte stellen Sie eine neue Frage dazu mit mehr Details. –