在任务启动时,将任务信息存储在数据库中,重启后从数据库中读取任务信息再添加到apscheduler中。
示例代码:
from apscheduler.schedulers.background import BackgroundScheduler import psycopg2
conn = psycopg2.connect(database="mydb", user="myuser", password="mypassword", host="localhost", port="5432") cur = conn.cursor()
scheduler = BackgroundScheduler()
cur.execute("SELECT job_id, func, args, kwargs, trigger FROM job_table") rows = cur.fetchall() for row in rows: job_id, func, args, kwargs, trigger = row scheduler.add_job(func, trigger, args=args, kwargs=kwargs, id=job_id)
scheduler.start()
def my_job(): # 任务的逻辑 pass
scheduler.add_job(my_job, trigger='interval', seconds=10, id='job1')
cur.execute("INSERT INTO job_table (job_id, func, args, kwargs, trigger) VALUES ('job1', 'my_job', NULL, NULL, 'interval')")
conn.commit() cur.close() conn.close()