def test_isotime_local(): local_date = now_as_local() local_format = re.compile(r'[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{6}.*') assert isinstance(local_date, str) assert local_format.match(local_date) assert epoch_to_local(local_to_epoch(local_date)) == local_date assert local_date == epoch_to_local(iso_to_epoch(epoch_to_iso(local_to_epoch(local_date))))
def test_isotime_iso(): iso_date = now_as_iso() iso_format = re.compile(r'[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{6}Z') assert isinstance(iso_date, str) assert iso_format.match(iso_date) assert epoch_to_iso(iso_to_epoch(iso_date)) == iso_date assert iso_date == epoch_to_iso(local_to_epoch(epoch_to_local(iso_to_epoch(iso_date))))
def test_isotime_rounding_error(): for t in ["2020-01-29 18:41:25.758416", "2020-01-29 18:41:25.127600"]: epoch = local_to_epoch(t) local = epoch_to_local(epoch) assert local == t
def test_isotime_epoch(): epoch_date = now(200) assert epoch_date == local_to_epoch(epoch_to_local(epoch_date)) assert epoch_date == iso_to_epoch(epoch_to_iso(epoch_date)) assert isinstance(epoch_date, float)
port=config.core.redis.nonpersistent.port, db=config.core.redis.nonpersistent.db) persist = redis.StrictRedis(host=config.core.redis.persistent.host, port=config.core.redis.persistent.port, db=config.core.redis.persistent.db) time_diff = 60 * 5 # Anything older than 5 minutes... quota_time_diff = 60 * 60 # Anything older than 1 hour... while True: # API Quota tracking data = client.hgetall('c-tracker-quota') if data: for key, value in data.iteritems(): epoch = isotime.local_to_epoch(json.loads(value)) now = time.time() if now - epoch >= time_diff: user = key.split(" ")[0] client.hdel('c-tracker-quota', key) client.decr('quota-{user}'.format(user=user)) logger.warning( "API request: \"{key}\" was removed from ongoing " "request because it reached the timeout.".format(key=key)) else: logger.debug( "{key} is ok. [{now} - {value} < {time_diff}]".format( key=key, now=now, value=epoch, time_diff=time_diff)) # Submission Quota tracking for key in persist.keys('submissions-*'): data = persist.hgetall(key)