2016-05-07 21 views
0

Ich erzeuge ein PDF-Dokument und speichere es vorübergehend im Verzeichnis /tmp. Sobald das Dokument erstellt und im Verzeichnis gespeichert wurde (ich mache es als Hintergrundprozess mit Sidekiq), lade ich es auf Amazon S3 hoch und lösche es aus dem Verzeichnis /tmp.Schienen 4 - wie wird das "/ tmp" gereinigt?

Was ich festgestellt habe, ist, wenn ein Benutzer ein Dokument erzeugt und ich etwas neuen Code auf dem Server bereitstellen (mit Capistrano), wird der Prozess des Generierens/Hochladens von Dokumenten unterbrochen.

Ich fragte mich, ob dies mit Sidekiq verwandt sein könnte? Es läuft als Upstart-Dienst auf Ubuntu, also denke ich nicht.

Dann dachte ich, das Problem könnte sein, dass ich das Dokument im Verzeichnis /tmp speichern. Wie funktioniert das Verzeichnis? Wird der gesamte Inhalt des Verzeichnisses gelöscht, wenn ich eine neue Bereitstellung mit Capistrano durchführe?

EDIT:

Die Erstellung von Dokumenten dauert dauert in der Regel 5-10 Sekunden, aber die Warteschlange default, so dass der Prozess scheitern könnte, weil es in der Warteschlange zu viele default Prozesse ist?

+0

'/ tmp'-Verzeichnis nach jedem Neustart bereinigt. –

+0

'capistrano erstellt separaten Ordner für jeden neu implementierten Code – illusionist

+0

@illusionist ok, wenn ich die Datei erzeuge, wird sie in'/tmp' gespeichert und in diesem Moment, wenn ich mit der Bereitstellung eines Codes beginne, wird dieser '/ tmp'-Ordner unzugänglich für die Anwendung, habe ich recht? – user984621

Antwort

0

Das Verzeichnis /tmp sollte nur während des Serverstarts bereinigt werden (da @ Зелёный bereits kommentiert wurde). Aber Ihre PDF-Generierung/Upload dauert möglicherweise nur zu lange und der Prozess könnte getötet werden. Dies wird here dokumentiert und ich zitiere aus der Dokumentation:

sidekiqctl stop [pidfile] 60 

Dieser Begriff sendet, wartet bis zu 60 Sekunden und dann töten -9 Sidekiq Prozess, wenn es bis dahin nicht verlassen hat. Denken Sie daran, dass das Dead Timeout die Zeit ist, die sidekiqctl wartet, bevor kill -9 im Sidekiq-Prozess ausgeführt wird.

Die Details sollten in der Konsolenausgabe während des Capistrano Einsatz gezeigt werden, so dass, wenn es nicht der Fall Prozess ist jämmerlich, bitte die Ausgabe auf die Frage hinzufügen.

+0

Dank @BoraMa, was kann ich über die Lösung denken? Ich denke, ich sollte wahrscheinlich PDF als höchste Priorität setzen, oder? Denn momentan sind alle Sikdeiq-Prozesse "default". Sollte ich ein anderes Verzeichnis auswählen, in dem ich die temporären Dateien speichern würde, bevor sie in AWS S3 hochgeladen werden? Oder ist das Verzeichnis '/ tmp' für diese Aufgabe geeignet? – user984621