Использование APScheduler в clock.py на Heroku для вызова def send_email_reminder из основного приложения - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть приложение, которое отслеживает пользователей, заимствующих оборудование. В приложении у меня есть приложение "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()

Любая помощь будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...