2017-08-11 3 views
0

Ich verwende den Python-Scheduler, um einen Prozess in einem Intervall von 3 Sekunden auszuführen. Aber die Ausgabe (nur eine Hallo Welt) läuft nur einmal. Ich starte diese Funktion nach dem Start meines Django-Webservers, daher muss dieses Skript im Hintergrund ausgeführt werden.Warum Python Scheduler nur einmal ausgeführt wird?

Frage 1: Warum mein Skript einen nur laufen, eine nicht jeder zweiter (Wert der Verzögerung 3)

Frage 2: Ist das eine gute Praxis ein Skript im Hintergrund oder in laufen ein Intervall? Ich erwarte, dass das Skript nicht mehr als 3 Sekunden benötigt, um ausgeführt zu werden.

import sched, time 
def startProcess(self): 
    print("START PROCESS") 
    print(time.time()) 
    s = sched.scheduler(time.time, time.sleep) 
    s.enter(3,1, self.initProcessHelloWorld) 
    s.run() 
    print(time.time()) 
    print("END PROCESS") 

Antwort

0

Antwort auf die Frage 1: Die Task läuft nur einmal, weil man (nehme ich an) nur die startProcess einmal anrufen. Die sched setzt einmal die initProcessHelloWorld aber nur einmal auf. Sie müssen es N mal tun, wenn Sie N Anrufe zu initProcessHelloWorld möchten.

Antwort auf die Frage 2: Es ist eine gute Idee, aber es ist besser, eine daemon zu machen. Hier sind Sie ein daemon package und ein example of a daemon

+0

Vielen Dank für Ihre schnelle Antwort, eine andere Frage über das Deamon-Paket, ich kann keine Spezifikation über das Betriebssystem finden, also .. läuft es auch unter Windows? Weil ich nur weiß, dass Deamons die Unix-Welt bilden. –

+0

@ michael-mammut Sorry, aber ich nicht ... Ich habe es nur auf Unix-Systemen versucht. PS: Wenn meine Antwort Ihnen hilft, markieren Sie sie als "Antwort"! –

Verwandte Themen