У меня есть приложение, которое отслеживает пользователей, заимствующих оборудование. В приложении у меня есть приложение "tool_req". В файле views.py у меня есть определение с именем "send_email_reminder". Я хочу, чтобы это запускалось один раз в день, чтобы отправлять электронные письма заемщику об окончании срока аренды. Я установил APScheduler и у меня есть файл "clock.py" для фонового запуска на Heroku. Мой Procfile выглядит так:
Procfile.py ...
web: gunicorn trydjango.wsgi
clock: python clock.py
...
Когда я пу sh приложение, используя следующий clock.py файл Я вижу сообщение каждые 3 минуты в своих журналах.
clock.py
from apscheduler.schedulers.blocking import BlockingScheduler
sched = BlockingScheduler()
@sched.scheduled_job('interval', minutes=3)
def timed_job():
print('This job is run every three minutes.')
sched.start()
Пока все хорошо. Однако, когда я вставляю код для запуска send_email_reminder, то есть:
clock.py
from apscheduler.schedulers.blocking import BlockingScheduler
from tool_req.views import send_email_reminder
sched = BlockingScheduler()
@sched.scheduled_job('interval', minutes=3)
def timed_job():
send_email_reminder('request')
sched.start()
, я получаю эту ошибку:
app [ clock.1]: ModuleNotFoundError: Нет модуля с именем '/ app / trydjango / settings'
Я пробовал много вещей, включая различные комбинации следующих в моем файле clock.py, но безрезультатно .
import os
from apscheduler.schedulers.blocking import BlockingScheduler
from tool_req.views import send_email_reminder
from django.contrib.auth.models import User
from tools.models import Tool, Literature
from pages.models import Person
from tool_req.models import RequestPost, LiteratureRequestPost
from django.conf import settings
os.environ['DJANGO_SETTINGS_MODULE'] = 'trydjango.settings'
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "trydjango.settings")
from django.db import models
import django
django.setup()
from trydjango import settings
from django.conf import settings
from trydjango import trydjango_defaults
settings.configure()
Любая помощь будет принята с благодарностью.