Plugin-Neuling hier. Ich versuche, ein Plugin anzupassen, das etwa eine Stunde in Anspruch nimmt. Wenn ich mir /sidekiq ansehe, stelle ich fest, dass der Job alle 30 Minuten ausgeführt wird. Bevor also der erste Job abgeschlossen ist, startet eine weitere Instanz desselben Jobs, was zu doppelten Ergebnissen führt. Wie kann ich das verhindern?
Eine Möglichkeit wäre natürlich, den Job innerhalb seiner erlaubten 30 Minuten ablaufen zu lassen, aber es gibt weitere Einschränkungen, und ich würde es lieber so lange laufen lassen, wie es möchte.
Ich habe Folgendes versucht, aber es scheint nicht zu verhindern, dass eine zweite Instanz des Jobs ausgeführt wird:
Ich glaube, dass der Zusammenfassungs-E-Mail-Job einen solchen Test durchführt, der Anfang dieses Jahres hinzugefügt wurde. Vielleicht solltest du dir das einmal ansehen.
Wenn sich der Mutex innerhalb des execute-Blocks befindet, bedeutet das lediglich, dass er dort blockiert und auf den Mutex wartet. Das heißt, Sie werden zwei Jobs sehen: einen, der tatsächlich ausgeführt wird, und einen anderen, der auf den Mutex wartet.
Vielleicht möchten Sie prüfen, ob eine andere Instanz läuft, und im positiven Fall frühzeitig zurückkehren? Ohne genauere Kenntnis des konkreten Anwendungsfalls ist das schwer zu sagen.