24 lines
613 B
Python
24 lines
613 B
Python
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)
|