def schedule_digests(): from sentry import digests deadline = time.time() # The maximum (but hopefully not typical) expected delay can be roughly # calculated by adding together the schedule interval, the # of shards * # schedule timeout (at least until these are able to be processed in # parallel), the expected duration of time an item spends waiting in the # queue to be processed for delivery and the expected duration of time an # item takes to be processed for delivery, so this timeout should be # relatively high to avoid requeueing items before they even had a chance # to be processed. timeout = 300 digests.maintenance(deadline - timeout) for entry in digests.schedule(deadline): deliver_digest.delay(entry.key, entry.timestamp)