gpt4 book ai didi

APScheduler - 作业未执行

转载 作者:行者123 更新时间:2023-12-03 16:43:31 25 4
gpt4 key购买 nike

我是 APScheduler 的新手,并在在更大范围内实现之前对其进行了测试。

我已经创建了下面的代码,但是当我将 add_job 与 trigger='date' 一起使用时,我的函数从未被调用过。 .如果我使用 trigger='interval' ,然后一切正常。

我也试过玩 run_date参数,没有运气。

知道什么可能是错的吗?

Apscheduler 版本为 3.0.3

提前谢谢了 :)

def my_listener(event):
if event.exception:
print('The job crashed :(')
else:
print('The job worked :)')

def test():
print("{} ok ".format(datetime.now()))


def myFunc(content, img):
print("{} - content={}|image{}".format(datetime.now(), content, img))
myfile = open("scheduler.log", "a")
myfile.write("{} - content={}|image{}".format(datetime.now(), content, img))
myfile.close()

def main():
jobstores = \
{
'default': SQLAlchemyJobStore(url="postgresql+psycopg2://{}:{}@{}:{}/{}".format(db_user, db_password, db_host, db_port, db_database))
}

executors = \
{
'default': ThreadPoolExecutor(20),
'processpool': ProcessPoolExecutor(5)
}

job_defaults = \
{
'coalesce': False,
'max_instances': 3
}

scheduler = BackgroundScheduler(jobstores=jobstores, executors=executors, job_defaults=job_defaults, timezone=utc)
scheduler.start()
CURR_DATE = datetime.strptime(datetime.strftime(datetime.now(), '%Y%m%d%H%M'), '%Y%m%d%H%M')
JOB_DATE = CURR_DATE + timedelta(minutes=1)
uid=uuid.uuid4()
newjob = scheduler.add_job(myFunc,
trigger='date',
args=['content data', 'image data'],
kwargs=None,
id=str(uid),
name='test' + str(uid),
misfire_grace_time=5,
coalesce=False,
max_instances=1,
next_run_time= JOB_DATE,
jobstore='default',
executor='default',
replace_existing=True)

print("Added - {}".format(newjob))
scheduler.add_listener(my_listener, events.EVENT_JOB_EXECUTED | events.EVENT_JOB_ERROR)
scheduler.print_jobs()
while True:
sys.stdout.write('{}\n'.format(datetime.now())); sys.stdout.flush()
sleep(1)

if __name__ == "__main__":
main()

最佳答案

问题是你正在使用
next_run_time= JOB_DATE,
而不是 run_date=JOB_DATE,

另一个选项是声明您的触发器并将其作为参数传递以添加如下作业:

trigger = DateTrigger(run_date=start_date)
newjob = scheduler.add_job(myFunc,
trigger=trigger,
args=['content data', 'image data'],
kwargs=None,
id=str(uid),
name='test' + str(uid),
misfire_grace_time=5,
coalesce=False,
max_instances=1,
jobstore='default',
executor='default',
replace_existing=True)

您的代码的另一个问题是,当您让调度程序时间感知时,您使用的是不知道的日期时间
CURR_DATE = datetime.strptime(datetime.strftime(datetime.now(), '%Y%m%d%H%M'), '%Y%m%d%H%M')
JOB_DATE = CURR_DATE + timedelta(minutes=1) #this is unaware

尝试以这种方式声明您的日期:
import pytz
import datetime

job_date = datetime.datetime.now(pytz.UTC) + datetime.timedelta(minutes=1)

关于APScheduler - 作业未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32784942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com