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 ...
?