Ich verwende einen verzögerten Job in einem Setup, in dem ich mehrere Worker ausführe. Um meiner Frage willen ist es nicht wirklich wichtig, aber sagen wir mal, dass ich 10 Arbeiter betreibe (momentan im Entwicklungsmodus).Mehrere verzögerte Jobprozesse, die denselben Job starten
Das Problem, das ich habe, ist, dass zwei verschiedene Arbeiter manchmal anfangen, an demselben Job zu arbeiten, indem sie die perform-Methode auf meinem Job-Objekt aufrufen.
Nach bestem Wissen verwendet Delayed Job pessimistisches Sperren, um dies zu verhindern, aber es scheint manchmal noch genug Zeit zu haben, um den Job zu stehlen, bevor der erste Arbeiter Zeit hat, ihn zu sperren.
Ich frage nur, ob jemand anderes dieses Problem erfahren hat, oder ob es meine Einrichtung ist, die sich schlecht benimmt. Ich benutze Postrgres und das passiert sowohl in meiner Dev-Maschine als auch auf Heroku, wo ich es hoste.
Ich werde versuchen, es in meinen Jobs zu umgehen, aber es ist immer noch ein bisschen problematisch, dass dies passiert. Im Idealfall würde es niemals passieren, dass ein verzögerter Auftrag aus zwei Prozessen auf demselben Auftrag ausgeführt wird.
Danke!
Ich sehe etwas ähnliches. Es war nicht in der Lage, es vollständig aufzuspüren, aber es scheint, dass zwischen dem Prüfen nach einer Sperre und dem Herstellen der Sperre mehrere Arbeiter den Auftrag ergreifen und ausführen. –
Ich sollte sagen, dass ich die Einstellung gefunden habe '' 'Delayed :: Worker.read_ahead = 1''' in einem Initialisierer schien das Problem zu mildern. –
Hatte das gleiche Problem mit Resque, habe keine Lösung gefunden –