2016-03-19 7 views

Antwort

1

Auf der Ruby-Ebene, was passiert, wenn mehrere Prozesse versuchen, in die Datei zu schreiben, hängt davon ab, wie die Bibliothek die Datei verwendet: ob und wie es die Datei vor dem Öffnen sperrt und in welchem ​​Modus es die Datei öffnet könnte nur funktionieren, es könnte einen Fehler auslösen, oder (wahrscheinlich, wenn die Bibliothek nichts tut, um mit dieser Situation umzugehen) können mehrere Writer stillschweigend verschachteln miteinander auf eine Weise, die die Datei beschädigen könnte, oder der letzte Writer könnte gewinnen.

Auf der Rails-Ebene hängt es davon ab, wie Sie Rails ausführen. Wenn Sie eine einzelne, normalerweise konfigurierte Rails-Instanz auf einem bestimmten Server ausführen, haben Sie keine Probleme, da Rails selbst standardmäßig single-threaded ist. Wenn Sie mehrere Rails-Instanzen ausführen (vermutlich von einem Anwendungsserver wie Passenger oder Einhorn gesteuert), haben Sie möglicherweise Probleme.

die Bibliothek Unter der Annahme, nicht verarbeitet mehrere Autoren für Sie, Sie können in ein paar Möglichkeiten, um es:

  • Run nur eine Instanz Ihrer Rails-Anwendung auf jedem Server (oder Docker Container oder chrooted Umgebung).
  • Fork die Bibliothek und ändern Sie es, um die Prozess-ID in den Dateinamen aufzunehmen. Das würde ich tun.
Verwandte Themen