前提
- dbアプリが定義されていて、dbディレクト以下のmodels.pyをimportして使う
- herokuとDjangoでAPSchedulerが設定済み
- Procfileに
clock: python アプリ名/clock.py
が記載されており、アプリ名/アプリ名以下にclock.pyがある。
clock.py
import os import django from apscheduler.schedulers.blocking import BlockingScheduler sched = BlockingScheduler() @sched.scheduled_job('cron', day_of_week='mon-sun', hour=17, minute=0) def reset_user_info(): from db.models import User for user in User.objects.all(): user.処理() def main(): os.environ.setdefault("DJANGO_SETTINGS_MODULE", "アプリ名") django.setup() sched.start() if __name__ == "__main__": main()
ポイント
sched.start()
の前に os.environ.setdefault("DJANGO_SETTINGS_MODULE", "アプリ名")
とdjango.setup()
を宣言する