2016-06-10 15 views
0

Nichts scheint eine perform Methode zu verhindern, die Sidekiq API zu verwenden. Es sollte im schreibgeschützten Modus sicher sein.Ist es sicher, die Sidekiq-API von innen aufrufen zu können?

Was ist, wenn es eine "Schreib" -Methode aufruft? Vor allem, wenn diese Methode auf den aktuellen Job selbst einwirkt.

Wir möchten einen Job neu planen, ohne einen neuen Job zu erstellen, da wir die Jobvervollständigung mit dem Juwel sidekiq-status von einem anderen Mitarbeiter verfolgen müssen.

Mithilfe von MyWorker.perform_in oder MyWorker.perform_at, um den Job von innerhalb des Worker neu zu planen, wird ein neuer Job erstellt, wodurch es schwierig wird, den vollständigen Abschluss zu verfolgen. Wir denken daran, die Methode Sidekiq::ScheduledSet.new.find und die Methode reschedule zu verwenden, aber es erscheint peinlich und möglicherweise gefährlich, einen Job, der gerade abgeschlossen wird, neu zu planen.

Unterstützt Sidekiq und seine API diesen Anwendungsfall?

Antwort

0

Sie können möglicherweise etwas zusammen hacken, aber es wird sehr langsam, wenn Sie versuchen, die Sets und Listen in Redis direkt zu ändern. Sie sind nicht dazu bestimmt, so verwendet zu werden.

Die offizielle Sidekiq-Lösung für dieses Problem ist ein Batch.

https://github.com/mperham/sidekiq/wiki/Batches#status

Sie erstellen einen Ein-Job Charge. Wenn der Job neu terminiert werden muss, fügt er dem Batch einen neuen Job hinzu, der später ausgeführt werden soll. Ihr anderer Mitarbeiter prüft nur den Status des gesamten Stapels und ob er zu 100% abgeschlossen ist.

+0

Danke für die Antwort. Wir werden uns die Batch-Funktion ansehen, um dieses Problem zu lösen. –