import time
from funboost import boost, BrokerEnum, run_forever, funboost_aps_scheduler

@boost("task_queue_name1", qps=0.5, broker_kind=BrokerEnum.REDIS_ACK_ABLE)  # 入参包括20种，运行控制方式非常多，想得到的控制都会有。
def task_fun(x, y):
    print(f'{x} + {y} = {x + y}')
    time.sleep(3)  # 框架会自动并发绕开这个阻塞，无论函数内部随机耗时多久都能自动调节并发达到每秒运行 5 次 这个 task_fun 函数的目的。
    return True


if __name__ == "__main__":
    # for i in range(2):
    #     task_fun.pub(dict(x=i, y=i * 2))
    #     task_fun.push(i, y=i * 2)  # 发布者发布任务
    funboost_aps_scheduler.add_push_job(task_fun, 'cron', day_of_week='*', hour=10, minute=8, second=00,
                                        kwargs={"x": 5, "y": 6})  # 每隔3秒发布一次任务，自然就能每隔3秒消费一次任务了。
    funboost_aps_scheduler.start()
    task_fun.consume()  # 消费者启动循环调度并发消费任务
    run_forever()
