Я использую apscheduler и обнаружил, что EVENT_JOB_SUBMITTED сообщается после EVENT_JOB_EXECUTED.Я использую BackgroundScheduler и хранилище заданий в памяти.Пример кода приведен ниже:
def jobby(): # simple job
print("the job is running! ", datetime.now())
# event listener which is attached
class ECPJobEventManager(object):
def __call__(self, event):
print("EVENT:", event, datetime.now())
if isinstance(event, JobEvent):
print(" JOB ID:", event.job_id)
Вот вывод после добавления задания задания с помощью триггера «Дата» через несколько минут в будущем:
EVENT: <JobEvent (code=512)> 2019-06-13 12:13:14.511437
JOB ID: job123
the job is running! 2019-06-13 12:14:07.894373
EVENT: <JobExecutionEvent (code=4096)> 2019-06-13 12:14:08.182397
JOB ID: job123
EVENT: <JobEvent (code=1024)> 2019-06-13 12:14:09.411494
JOB ID: job123
EVENT: <JobSubmissionEvent (code=32768)> 2019-06-13 12:14:10.326586
JOB ID: job123
Подобное поведение возникает при работе с интерваломи Cron запускает.Использование немедленного триггера, по-видимому, генерирует JobSubmissionEvent до JobExecutionEvent (хотя я проверял его всего несколько раз, и это может не доказать, что он работает таким образом каждый раз).
Итак, это ожидаемое поведение?Это проблема синхронизации с потоком выполнения?