собственное объяснение Бретта Слаткина
[Бретт]
Привет всем,
Часть int (time.time () / 30) имени задачиэто для предотвращения остановки очереди.Когда memcache будет удален, счетчик рабочего индекса будет сброшен на ноль.Это означает, что новые рабочие элементы fork-join могут вставлять задачи, имена которых совпадают с уже вставленными задачами.Включив временное окно ~ 30 секунд в имя задачи, мы гарантируем, что эта проблема может длиться только около тридцати секунд.По этой же причине вы должны вызывать исключение, когда видите исключение TombstonedTaskError.
Сценарий наихудшего случая, если часы выигрывают, состоит в том, что для выполнения разветвления запускаются две задачи вместо одной,является приемлемым компромиссом во многих случаях и фундаментальной возможностью при использовании API очереди задач.Это можно смягчить, используя сущности подтверждения голубиного отверстия, как я использую в своем примере с материализованным представлением.
Надеюсь, это поможет,
[/ Brett]