import json import time import datetime class DateTimeJSONEncoder(json.JSONEncoder): """ JSONEncoder subclass that knows how to encode date/time, decimal types, and UUIDs. """ def default(self, o): # See "Date Time String Format" in the ECMA-262 specification. if isinstance(o, datetime.datetime): r = o.isoformat() if o.microsecond: r = r[:23] + r[26:] if r.endswith('+00:00'): r = r[:-6] + 'Z' return r else: return super().default(o) def dict_str_to_int(res): for k, v in res.items(): res[k] = int(v) class RedisHandler: def __init__(self, redis): self.redis = redis self.time_expires = datetime.timedelta(hours=24) self.time_format = '%a %b %d %H:%M:%S %Y' self.prefix = 'bwm_ocr' self.common_queue_key = '{0}:common_queue'.format(self.prefix) self.priority_queue_key = '{0}:priority_queue'.format(self.prefix) self.session_id_key = '{0}:session_id'.format(self.prefix) def enqueue(self, tasks, is_priority=False): # 1 key = self.priority_queue_key if is_priority else self.common_queue_key return self.redis.lpush(key, tasks) def dequeue(self): # task or None task = self.redis.rpop(self.priority_queue_key) is_priority = True if task is None: task = self.redis.rpop(self.common_queue_key) is_priority = False return task, is_priority def set_session_id(self, session_id): return self.redis.set(self.session_id_key, session_id) def get_session_id(self): return self.redis.get(self.session_id_key)