伪代码如下所示:
def main():
scheduler = BackgroundScheduler()
scheduler.add_job(delayed_task,
id=task_id,
next_run_time=somedate,
args=(task_id, some_data))
scheduler.start()
do_something_else()
def delayed_task(id, passed_data):
rd = connect_to_redis()
redis_data = rd.fetch_data(id)
publish_data(passed_data, redis_data)
updated_run_time = parse(redis_data)
#obtain a scheduler object here
scheduler.modify_job(id, next_run_time=updated_run_time)
问题如下:是否有方法从任务访问调度程序?
无法将计划程序作为参数传递给任务,因为这将引发
TypeError: can't pickle _thread.lock objects
出于同样的原因,我不能将所有这些放在一个类中并让它调用一个方法,因为该方法的参数包括
self
,它是包含调度程序的类,因此将导致相同的问题。