Stop python-Skript in Endlosschleife

Arbeite ich an einem Python-Skript, das ständig kratzen Daten, aber es wird sehr lange dauern. Gibt es einen sicheren Weg, um zu stoppen eine lang laufende python-Skript? Die Schleife wird ausgeführt für mehr als 10 Minuten und ich brauche einen Weg, um es zu stoppen, wenn ich will, nachdem es bereits ausgeführt wird.

Wenn ich führen Sie es durch einen cron-job, dann bin ich der Annahme, es werde einfach laufen, bis es fertig ist, also wie verhindere ich es?

Auch, wenn ich es über einen browser und rufen Sie die Datei. Ich gehe davon aus, stoppen Sie die Seite laden würde halt es, richtig?


Hier ist das Szenario:
ich habe ein python-Skript, das sammeln von Informationen aus den Seiten und legen Sie Sie in eine Warteschlange. Dann möchte ich ein weiteres python-Skript, das in eine unendliche Schleife, die prüft nur auf neue Elemente in der Warteschlange. Können sagen, ich will die Endlosschleife beginnt um 8 Uhr und endet um 8 Uhr. Wie kann ich dies erreichen?

  • a) welches Betriebssystem? b) Wie werden Sie ausgeführt? (Sie Liste cron-als ein Beispiel - ist, dass das einzige Beispiel?) c) Welchen browser und web-server (z.B. apache)? Zum Beispiel, wenn Sie es von der Befehlszeile auf einem Mac, würde Sie BEFEHL-., oder Strg-C in Linux.
  • Wie ist der Informationsaustausch zwischen den beiden Programmen (der Warteschlange)?
  • a) windows b) es dann auch starten, indem Sie entweder einen php-Aufruf oder ein python-Aufruf von c) würde ich es mit firefox oder chrome und bei mir läuft es auf meinem eigenen windows-pc mit wamp-server. Ich habe gerade die details in den "hier ist das Szenario". Die Informationen werden gemeinsam mit entweder eine txt Datei oder eine mysql-Datenbank. Ich denke, ein Stillstand/schlafen/warten auf das Ende der Schleife, so dass Sie wartet zumindest ein paar Sekunden, bevor Sie die Warteschlange erneut.
  • killall python
  • so etwas wie os.system("killall"). Gibt es eine Möglichkeit zu überprüfen, um sicherzustellen, dass es funktionierte. Wie einige Befehl, den ich ausführen kann, um zu sehen, welche Skripte ausgeführt werden, dann verwenden Sie killall und überprüfen Sie erneut, um sicherzustellen, dass es vorbei ist?
  • sehr schlechtes programm-design
  • killall ist Weg overkill für diese situation. Es beendet alle python-Programme auf dem Rechner ausgeführt werden, und Sie haben vielleicht andere, die Sie versuchen zu laufen zur Zeit.
  • Dmitry, es ist nur für das anfängliche kratzen. Es ist nicht gonna laufen auf unbestimmte Zeit. Ich verstehe, dass etwas loop forever ist eine Verschwendung von Ressourcen.
  • Ich bin mir nicht sicher, warum nur die überprüfung der Zeit (wie in meiner Antwort unten) für Sie nicht funktioniert.
  • Robinson ich war auf der Suche für einige Befehl, den ich nennen könnte, die in einem anderen script. so etwas wie stop.py könnte, rufen Sie einfach einen einfachen Befehl zum beenden der python-Skript queue.py
  • Drücken Sie einfach die power off-Taste geduldig.
  • Warum in einem anderen Skript? Warum nicht einfach direkt?
  • Ursache, wenn es bereits läuft, dann wie kann ich das senden einer Eingabe zu dem gleichen Skript während der Ausführung?
  • Auch, nicht immer zu tun os.system("killall"): das tötet alle Prozesse auf Ihrem computer, wie Ihre anderen Anwendungen. @Alp Vorschlag war os.system("killall python"), das tötet alle python-Prozesse.
  • wenn Sie es aus dem terminal, verwenden Sie einen Tastatur-interrupt. Wenn es im hintergrund läuft, man könnte killall python direkt in der Befehlszeile. Nochmals: wie sind Sie starten Sie den python-Prozess?
  • DANKE, das hätte unangenehm :/

InformationsquelleAutor Rawr | 2012-08-10
Schreibe einen Kommentar