Это зависит от того, что брокер вы используете и несколько конфигураций, как visibility_timeout
.
Когда задание с набором ETA находится в очереди, оно выбирается рабочим как можно скорее вместо ETA. Работник выполняет задание до ETA и выполняет его тогда. Работник берет брокера, когда он справляется с задачей; поэтому брокер знает, когда сообщение задачи можно безопасно удалить.
Некоторые брокеры, такие как Redis и SQS, считают задачу утраченной, если она не признана работником в течение некоторого времени, которая называется visibility_timeout
. В этом случае он позволяет другому работнику принимать сообщение задачи.
Обращайтесь к вашему делу, если вы используете Redis, у которого по умолчанию visibility_timeout
1 час, задержка задания 12 дней может закончиться выполнение задачи несколько раз, например 12 * 24 раза, в зависимости от вашего количества работников.
Может возникнуть соблазн увеличить visibility_timeout
до более чем 12 дней. Имейте в виду, что он эффективно отключает механизм подтверждения, который существует по уважительной причине.
Я предлагаю вам использовать задачу cron, которая выполняется с интервалом visibility_timeout
, для сканирования задач, которые должны вскоре выполняться и помещать их в очередь по их фактическому ETA.
Refs:
Вы пробовали ??? Ну ладно, вам придется быть терпеливым –
попробуйте в vm - тогда вы можете возиться с системным временем, не разбирая вещи – scytale
@brunodesthuilliers: Да, попробовали .. Думаю, я узнаю через 12 дней .. – ofey