Я новичок в django и работаю над проектом уже несколько недель.Я делаю Django-приложение, которое я размещаю на heroku.Я хочу наметить задачу.Конечная цель - выполнить серию вызовов API, которые сохранят результаты в модели.
В настоящее время у меня в приложении есть файл scheduler.py
from django.core.management.base import BaseCommand, CommandError
from apscheduler.schedulers.blocking import BlockingScheduler
sched = BlockingScheduler()
from fans.models import TotalPageLikes
@sched.scheduled_job('interval',minutes=1)
def timed_job():
print('This job runs every minute')
@sched.scheduled_job('interval',minutes=1)
def fan_call():
twr = TotalPageLikes()
twr.fans = 50
twr.save()
print('should have saved TWR')
class Command(BaseCommand):
def handle(self, *args, **options):
sched.start()
В моем Procfile я называю это
web: gunicorn site1.wsgi
scheduler: python manage.py scheduler
А вот модель
class TotalPageLikes(models.Model):
fans = models.BigIntegerField()
Наконец, вот мой админ
from django.contrib import admin
# Register your models here.
from .models import Fan, Input, TotalPageLikes
admin.site.register(Fan)
admin.site.register(Input)
admin.site.register(TotalPageLikes)
Все успешно разворачивается и запускается, и я могу увидеть результаты с помощью logu heroku --tail.Я вижу операторы печати, но когда я открываю приложение в heroku и перехожу к / admin, я вижу, что модель ничего не держит.Не отображается ошибка сохранения, но она не сохраняется должным образом.
Кто-нибудь знает, как сохранить запланированное задание в модели?Благодарю.
ОБНОВЛЕНИЕ Я пытался использовать TotalPageLikes.objects.create (fans = -1) в scheduler.py и, тем не менее, он не отображается при открытии приложения в heroku и переходе кадмин.Я вижу в журнале, что я его регистрирую, и не вижу ошибок.
ОБНОВЛЕНИЕ
Я запустил это локально, и он сделал то, что ожидал.Что-то происходит с герою.У меня это работает на отдельных динамо, потому что так я научился это делать.Я собираюсь попытаться проникнуть в функции в моем models.py, чтобы увидеть, изменит ли это что-нибудь.
ЗАКЛЮЧИТЕЛЬНОЕ ОБНОВЛЕНИЕ Мне пришлось использовать базу данных PostgreSQL для этого.Необходимые шаги включали использование команды heroku pg:credentials:url DATABASE
и настройку правильных кредитов здесь в my settings.py в DATABASES =.Затем мне пришлось создать нового суперпользователя python manage.py createsuperuser
для доступа к моей базе данных, чтобы убедиться, что она работает.