Effective Computer Science - 頂は礎の上に -

新しい技術の多くは基礎的な技術の上に成り立っています。激動の技術変化に耐えうる体系知識の習得を目的に「基礎と実践の架け橋」となるサイトを目指します。

【Heroku Django】APSchedulerで自作Modelを使う方法

前提

  • 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()を宣言する

参考