TypeError: Ожидался экземпляр хранилища заданий или строка, вместо этого получен NoneType

Почему я получаю эту ошибку? Я пытаюсь использовать apscheduler в моем проекте django. Но функция работает очень хорошо. После отправки некоторого письма она автоматически отключается.

вот мой код :

import logging
from django.conf import settings
from apscheduler.schedulers.blocking import BlockingScheduler
from django.core.management.base import BaseCommand
from django.core.mail import send_mail
from django.core.mail import EmailMessage
from ...models import *
from django_apscheduler.jobstores import DjangoJobStore
from apscheduler.triggers.cron import CronTrigger


logger = logging.getLogger(__name__)


class Command(BaseCommand):
    help = "Running in the dark :)"

    def send_email_to_registered_users(self):
        assessment = Assessment.objects.all()
        mail_subject = "Newsletter"
        message = "Welcome to our newsletter"
        for i in assessment:
            sender = i.email
            email_send = EmailMessage(mail_subject, message, to=[sender])
            email_send.send()
        print("email Sent")

    def handle(self, *args, **kwargs):
        scheduler = BlockingScheduler(timezone=settings.TIME_ZONE)
        scheduler.add_jobstore(DjangoJobStore(), "d")
        scheduler.add_jobstore(
            self.send_email_to_registered_users(),
            trigger=CronTrigger(second="*/10"),
            id="send_email_to_registered_users",
            max_instances=10,
        )
        logger.info("Printing Jobs!!! and sending!!")
        scheduler.start()

   

После беглого взгляда на документацию, я думаю, что это и есть исправление:

    def handle(self, *args, **kwargs):
        scheduler = BlockingScheduler(timezone=settings.TIME_ZONE)
        scheduler.add_jobstore(DjangoJobStore(), "d")
        scheduler.add_job(  # I'm guessing you want to add a job
            self.send_email_to_registered_users,  # NOTE: no parenthesis
            trigger=CronTrigger(second="*/10"),
            id="send_email_to_registered_users",
            max_instances=10,
        )
        logger.info("Printing Jobs!!! and sending!!")
        scheduler.start()

PS. не проще ли создать кронтаб, который запускает команду python manage.py ...?

Вернуться на верх