Я не понимаю, почему функция, заданная в apscheduler, непреднамеренно выполняется 3 раза в Django
Я создаю веб-приложение с помощью Django. Я написал следующие коды для добавления 1 данных в минуту в таблицу с помощью APScheduler. Когда я проверил данные, сгенерированные APScheduler на панели администратора Django, я обнаружил, что по какой-то причине было сгенерировано 3 данных в минуту. почему это происходит? и как я могу решить эту проблему?
# models.py
from django.db import models
class Test(models.Model):
test = models.CharField(max_length=8)
created_at = models.DateTimeField(auto_now_add=True)
# admin.py
from django.contrib import admin
from .models import Test
class TestAdmin(admin.ModelAdmin):
list_display = ('test', 'created_at')
admin.site.register(Test, TestAdmin)
# ap_scheduler.py
from apscheduler.schedulers.background import BackgroundScheduler
from .models import Test
def myfunc():
Test.objects.create(test='test')
def start():
scheduler = BackgroundScheduler()
scheduler.add_job(myfunc, 'cron', second=50)
scheduler.start()
# apps.py
from django.apps import AppConfig
class MembersConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'my_app_name'
def ready(self):
from .ap_scheduler import start
start()
Информация о версии
APScheduler==3.9.1
Django==4.0.5
Вероятно, у вас несколько планировщиков из-за того, что автозагрузчик вызывает команду start() несколько раз. Попробуйте запустить с:
python manage.py runserver --noreload