import time import multiprocessing as mp from queue import Queue from sched import scheduler from .queuethread import QueueThread @QueueThread.register class RetryThread(QueueThread): def __init__(self, inqueue: Queue, resultqueue: mp.Queue, schedule: scheduler): super().__init__(inqueue) self.resultqueue = resultqueue self.schedule = schedule def _process(self, item): next_time = item.notification_status.get_next_attempt() def do(): self.resultqueue.put(item) self.schedule.enterabs(next_time, 1, do)