mein Skript nodejs wird nach erfolgreicher Ausführung nicht selbstständig beendet

8

Ich habe ein Skript geschrieben, um meine db-Tabelle nach dem Lesen von Daten aus db-Tabellen und solr zu aktualisieren. Ich benutze asyn.waterfall Modul. Das Problem besteht darin, dass das Skript nach dem erfolgreichen Abschluss aller Vorgänge nicht beendet wird. Ich habe den db-Verbindungspool verwendet und denke auch, dass das Skript so erstellt werden könnte, dass es unendlich lange wartet. Ich möchte dieses Skript in crontab setzen und wenn es nicht richtig beendet wird, würde es eine Menge Instanzen unnötig erzeugen.

    
Vickrant 17.02.2014, 14:20
quelle

3 Antworten

12

Sie müssen es sagen, wenn Sie fertig sind, indem Sie

aufrufen %Vor%

Genauer gesagt möchten Sie dies im Callback von async.waterfall () (dem zweiten Argument dieser Funktion) aufrufen. Zu diesem Zeitpunkt wurde der gesamte asynchrone Code ausgeführt und das Skript sollte zum Beenden bereit sein.

EDIT: Wie von @Aaron unten gezeigt, hat dies wahrscheinlich etwas mit einer Datenbankverbindung zu tun, die aktiv ist, und es dem Knoten nicht erlaubt, zu enden.

    
awinder 17.02.2014, 15:29
quelle
22

Ich bin gerade durch dieses Problem gegangen.

Das Problem bei der Verwendung von process.exit () besteht lediglich darin, dass das Programm, an dem ich gerade arbeite, Handles erstellt, aber niemals zerstört.

Es wurde ein Verzeichnis verarbeitet und Daten in orientdb abgelegt.

Einige der Dinge, die ich gelernt habe, sind, dass die Datenbankverbindungen geschlossen werden müssen, bevor die Referenz entfernt wird. Und dieses process.exit () löst nicht alle Fälle.

Als mein Projekt 2.000 Dateien verarbeitet hat. Es würde auf etwa 500 übrig bleiben, und die zusätzlichen Griffe hätten den verfügbaren Arbeitsspeicher gefüllt. Was bedeutet, dass es nicht weitergehen könnte. Daher am Ende niemals die process.exit erreichen.

Wenn Sie auf der anderen Seite die Elemente schließen, die die App öffnen möchten, können Sie das Problem an der Quelle lösen.

Die beiden "Undokumentierten Funktionen", die ich verwenden konnte, waren

%Vor%

Ich bin nicht sicher, welche anderen Funktionen beim Debuggen dieser Art von Problemen helfen werden, aber diese waren erstaunlich.

Sie geben ein Array zurück, und Sie können mithilfe dieser Methoden eine Menge über die Vorgänge in Ihrem Prozess ermitteln.

Ich hoffe nur, das hilft jedem, der über diesen Posten stolpert.

    
The Lazy Coder 16.09.2015 19:52
quelle
1

Wir können die Ausführung mit folgendem Befehl beenden:

%Vor%     
Lusfikar Sheba 06.12.2017 17:11
quelle

Tags und Links