[Python-de] run Methode nach serve_forever aufrufen

Christopher Arndt chris at chrisarndt.de
Di Okt 11 18:32:11 CEST 2011


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


Mehr Informationen über die Mailingliste python-de