On 11.10.2011 17:23, Florian Lindner wrote:
Eine Möglichkeit wäre sicherlich, dass ich vor dem Aufruf von serve_forever() einen seperaten Thread starte und in diesen dann run() aufrufe. Dies erscheint mir allerdings recht umständlich.
'serve_forever' startet eine Eventschleife, die nicht wieder verlassen wird und die ganze Zeit laufen muss, damit der Server funktioniert. Wenn dein Programm parallel noch etwas machen soll, hast du im Prinzip vier Möglichkeiten: 1) 'serve_forever' läuft in einem extra-Thread. 2) 'server_forever' läuft in einem anderen Prozess ('multiprocssing') 3) Dein Programm wird aus der Eventschleife von 'serve_forever' aufgerufen. Dazu musst du natürlich callback-Funktionen definieren und dafür sorgen, das diese (bei bestimmten Events) aufgerufen werden. 4) Du progarmmierst eine eigene Eventschleife, die die Aufgaben von 'serve_forever' übernimmt und die Aufgaben deines eigenen Programms mit erledigt. Dann kannst du auch darüber nachdenken, ob der Server einen polling-Mechanismus verwendet, oder mit 'select' arbeitet. Im Falle 1) und 2) musst du dir noch einen Mechanismuss üebrlegen, wie Daten vom Serverthread/prozess in dein Hauptprogramm kommen. Sieh dir dazu das Modul 'Queue' an. Das mag dir umständlich erscheinen, liegt aber in der Natur der Sache. (Pseudo-)Parallele Ausführung von Code ist immer etwas aufwendiger. Chris