import time
from m_times import m_times
from worker import worker
from tasker import tasker
from loguru import logger as LOG

mt = m_times('SampleAdmission')
mt.Reporting('start')
LOG.add('./log/runtime_{time}.log', rotation="500 MB")

tk = tasker()
try:
    tk.redis_client.delete('SampleStart')
    tk.redis_client.delete('SampleStates')
    tk.redis_client.delete('Sample_task')
    tk.redis_client.delete('SampleInfo')
except Exception as e:
    LOG.error(e)
stp = 1
t = 1
while True:
    try:
        if stp == 1:
            tk.get()
            tk = None
            stp = 2

    except Exception as e:
        LOG.error(e)
        tk.pb.charmander.logout()
        tk = None
        tk = tasker()
        t += 1
        if t > 10:
            break
        continue
    try:
        wk = worker()
        wk.run()
    except Exception as e:
        time.sleep(20)
        LOG.error(e)
        wk = None
        t += 1
        if t > 10:
            break
        continue

    try:
        wk.redis_client.delete('SampleStart')
        wk.redis_client.delete('SampleStates')
        wk.redis_client.delete('Sample_task')
        wk.redis_client.delete('SampleInfo')
    except Exception as e:
        LOG.error(e)
    wk = None
    break
mt.Reporting('done')