Django_apscheduler вызывает мое задание много раз

У меня есть пакет планировщика python с таким основным файлом:

from apscheduler.schedulers.background import BackgroundScheduler
from django_apscheduler.jobstores import DjangoJobStore, register_events
from django.utils import timezone
from django_apscheduler.models import DjangoJobExecution
import sys

# This is the function you want to schedule - add as many as you want and then register them in the start() function below
def scheduled_function():
    print("my function is running as scheduled")


def start():
    scheduler = BackgroundScheduler()
    scheduler.add_jobstore(DjangoJobStore(), "default")

    scheduler.remove_all_jobs()

    scheduler.add_job(scheduled_function, 'interval', seconds=10, name='scheduled_function', jobstore='default')
    scheduler.start()

    scheduler.print_jobs()

Я вызываю его из своего apps.py следующим образом:

from django.apps import AppConfig
import os

class MyAppConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'my_server_app'

    def ready(self):
        if os.environ["RUN_MAIN"]: 
            from my_app.scheduler import scheduler
            scheduler.start()

Несмотря на вызов remove_all_jobs, моя функция вызывается много раз. Например, вывод моего вызова print_jobs выглядит следующим образом после того, как я перезапустил django несколько раз:

Jobstore default:
    scheduled_function (trigger: interval[0:00:10], next run at: 2025-01-16 11:43:56 UTC)
    scheduled_function (trigger: interval[0:00:10], next run at: 2025-01-16 11:43:56 UTC)
    scheduled_function (trigger: interval[0:00:10], next run at: 2025-01-16 11:43:56 UTC)
    scheduled_function (trigger: interval[0:00:10], next run at: 2025-01-16 11:44:01 UTC)
    scheduled_function (trigger: interval[0:00:10], next run at: 2025-01-16 11:44:02 UTC)
    scheduled_function (trigger: interval[0:00:10], next run at: 2025-01-16 11:44:03 UTC)
    scheduled_function (trigger: interval[0:00:10], next run at: 2025-01-16 11:44:04 UTC)
    scheduled_function (trigger: interval[0:00:10], next run at: 2025-01-16 11:44:05 UTC)
    scheduled_function (trigger: interval[0:00:10], next run at: 2025-01-16 11:44:05 UTC)

Как я могу полностью очистить состояние планировщика при каждом вызове start?

Ну, мне нужно было вызвать remove_all_jobs на jobstore, а не на планировщике:

scheduler._jobstores["default"].remove_all_jobs()
Вернуться на верх