APScheduler не запускается на run-сервере в django
Я следовал определенному руководству для реализации APScheduler
в моем приложении, но когда я запускаю свой проект, задание не вызывается вообще, и мне трудно понять, что я сделал неправильно
Каталог проекта выглядит следующим образом:
reports
auto_mails
__init__.py
send_mail.py
migrations
__init__.py
admin.py
allotmentkeys.py
apps.py
models.py
tests.py
urls.py
views.py
и views.py
class AutoMails(APIView):
def send_mail_test(self):
subject = 'Password Reset Request'
message = ' Password Reset Request. OTP is 454545 '
email_from = 'xxxx@xxx.com'
recipient_list = ['yyy@xxx.com', ]
print("called")
send_mail(subject, message, email_from, recipient_list, fail_silently=False)
send_mail.py
from apscheduler.schedulers.background import BackgroundScheduler
from reports.views import AutoMails
def start():
print("reached")
scheduler = BackgroundScheduler()
mail = AutoMails()
scheduler.add_job(mail.send_mail_test(),"interval", seconds=10, id="test_mails_001", replace_existing=True )
scheduler.start()
apps.py
from django.apps import AppConfig
class ReportsConfig(AppConfig):
name = 'reports'
def ready(self):
print("Sending Mails ..")
from auto_mails import send_mail
send_mail.start()
urls.py
path('auto-mails/', AutoMails.as_view()),
Когда я запускаю проект, используя python manage.py runserevr
, я получаю следующее:
C:\Users\Rahul Sharma\PycharmProjects\multitennant_v2\reports\views.py changed, reloading.
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
July 22, 2022 - 12:25:31
Django version 3.0.5, using settings 'multitennant_v2.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
где я ожидал увидеть Sending Mails..
, что планировщик запущен, но он не достиг ни одной функции.
Чего мне не хватает?
Мне нужно задать простой вопрос... Вы уверены, что включили ваше приложение reports
в INSTALLED_APPS
в файл settings.py
?
Вы должны написать так:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'django.contrib.flatpages',
'django.contrib.humanize',
'reports.apps.ReportsConfig',
]
Метод ready
в классе AppConfig
не вызывается, вероятно, из-за этого.
Вы вызвали функцию --> mail.send_mail_test(). Просто передайте ссылку на функцию ==> mail.send_mail_test