agronholm / agronholm/apscheduler

Possible for EVENT_JOB_EXECUTED to fire before EVENT_JOB_SUBMITTED

未关闭
#445 7 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
bug
主要语言
Python
星标
7.6k
派生
783
平均合并
4 天 8 小时
30 天内合并 PR
5

描述

Seems to affect Cron trigger occasionally. The ordering of job events is not guaranteed.

## Expected Behavior
The SUBMITTED event for a job should always fire before its corresponding EXECUTED event.

## Current Behavior
A job's EXECUTED event can fire before the SUBMITTED event leading to unexpected behaviour.

## Steps to Reproduce
https://repl.it/repls/CultivatedOrneryVideogames

```python3
from apscheduler.events import (
EVENT_JOB_EXECUTED,
EVENT_JOB_SUBMITTED,
)
from apscheduler.schedulers.blocking import BlockingScheduler
from time import sleep
import datetime as dt

def my_job():
print(f"my job: {dt.datetime.now()}")
return

def executed_listener(event):
print(f"job executed: {dt.datetime.now()}")

def submitted_listener(event):
print(f"job submitted: {dt.datetime.now()}")

if __name__ == "__main__":
print("starting")
scheduler = BlockingScheduler()

scheduler.add_job(
func=my_job,
id="my_job",
trigger="cron",
second="*/10"
)

scheduler.add_listener(executed_listener, EVENT_JOB_EXECUTED)
scheduler.add_listener(submitted_listener, EVENT_JOB_SUBMITTED)

scheduler.start()

while True:
sleep(60)
```

## Context (Environment)
Attempting to audit job run's to a SQL database means sometimes it is audited incorrectly. (e.g. Doing Insert row on SUBMITTED, update row on EXECUTED would lead to missed events as the row does not exist when the EXECUTED callback fires).

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。