Wie halten Sie ein python-Skript ausführen im terminal
Ich habe eine web-crawling-python-Skript ausführen im terminal für mehrere Stunden, die kontinuierlich Auffüllen meiner Datenbank. Es hat mehrere verschachtelte for-Schleifen. Für einige Gründe, ich muss meinen computer neu starten und weiter mein Skript aus genau der Ort, wo ich Links. Ist es möglich, zur Erhaltung der Zeiger Stand und Wiederaufnahme der zuvor ausgeführte Skript im terminal?
Ich bin auf der Suche nach einer Lösung, die funktioniert, ohne dass das python-Skript. Ändern Sie den code ist eine niedrigere Priorität als das würde bedeuten, neu zu starten Sie das Programm und investieren Zeit.
Update:
Vielen Dank für die VM-Vorschlag. Ich nehme den. Zur Vervollständigung, was generische änderungen Skript zu machen, pause und fortsetzen?
Update2:
Die Portierung auf VM funktioniert einwandfrei. Ich habe auch das geänderte Skript zu machen, failsafe-gegen Netzwerk-Ausfälle. Code unten geschrieben.
- Hibernate Ihrem computer!
- Führen Sie es in einer virtuellen Maschine.
- mein mac keine Unterstützung für den Ruhezustand :(. Außerdem ich glaube nicht, dass die Wiederaufnahme aus dem Ruhezustand wird fortgesetzt, meine crawling-Skript richtig.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie versuchen, die Aussetzung Ihres computer oder in einer virtuellen Maschine läuft, die Sie anschließend auszusetzen. Aber als das Skript für das arbeiten mit Netzwerkverbindungen Chancen sind Ihr Skript funktioniert nicht von der Stelle, die Sie Links ab, wenn Sie bringen Sie das system. Die Aussetzung eines Computers und die Wiederherstellung oder das speichern einer Virtuellen M/C und die Wiederherstellung würde bedeuten, dass Sie brauchen, um restablish die Netzwerk-Verbindung. Dies gilt für alle Elemente, die außerhalb Ihrer system-und Netzwerk-ist einer von Ihnen. Und es gibt hohe Chancen, dass wenn Sie ein dynamisches Netzwerk, das nächste mal, wenn Sie Booten die Chancen sind, Sie würden eine neue IP und der Netzwerk-Status, waren Sie zuvor tätig sein würde, ist nichtig.
Wenn Sie planen, ändern Sie das Skript, einige Dinge, die Sie brauchen, um es zu halten Verstand.
Wäre dies nicht eine einfache Aufgabe, so dass die Investition eine considrable Höhe der Zeit 🙂
Hinweis***
Auf einen zweiten Gedanken. Es gibt eine alternative von ändern Ihre Schrift. Sie können versuchen, mithilfe von cloud-Virtualisierungs-Lösungen wie Amazon EC2.
Als andere, die kommentiert haben, wenn Sie Ihr Skript in einer virtuellen Maschine eingehängt werden kann, müssen Sie ändern Sie Ihr Skript, um die Verfolgung des Staates.
Da man zu Auffüllen einer Datenbank mit deinen Daten, ich schlage vor, verwenden Sie es als einen Weg, um den Fortschritt des Skripts (die neueste URL analysiert, haben eine Liste von anhängigen URLs, etc.).
Wenn das Skript beendet wird abrupt, die Sie nicht haben, um über sorgen sparen den Staat, weil die Datenbank-Transaktionen werden zur Rettung kommen und nur die Daten, die Sie begangen haben, gespeichert werden.
Wenn das Skript ist retarted nur die Daten für die URLs, die Sie komplett verarbeitet, gespeichert wird und Sie es wieder aufnehmen kann, nur Kommissionierung bis die nächste URL in der Datenbank.
Ich portiert mein Skript für die VM und startete von dort aus. Allerdings gab es von der Netzwerkverbindung Störungen nach dem fortsetzen aus dem Ruhezustand. Hier ist, wie ich es gelöst durch anpassen python-Skript:
Diese änderung gemacht mein Skript Temperament Beweis, um Netzwerk-Ausfälle.
Wenn dieses problem ist wichtig genug, um diese Art von finanziellen Investitionen, könnten Sie das Skript ausführen, das auf einer virtuellen Maschine. Wenn Sie zum Herunterfahren, suspend der virtuellen Maschine, und dann der computer heruntergefahren wird. Wenn Sie wollen, um wieder zu starten, starten Sie den computer, und dann erwecken Sie Ihre virtuelle Maschine.
WinPDB ist ein python-debugger unterstützt remote-debugging. Ich habe es nie benutzt, und weiß nicht, ob das remote-debugging Laufenden Prozess erfordert eine änderung an dem script (was sehr wahrscheinlich ist, sonst ist es eine Frage der Sicherheit), aber wenn remote-debugging-ohne änderungen am script möglich ist, dann werden Sie möglicherweise in der Lage, dump den aktuellen Stand des scripts in einer Datei und herauszufinden, später, wie es zu laden. Ich glaube nicht, dass es funktionieren würde, aber.