LoginSignup
2
4

More than 1 year has passed since last update.

DjangoでHeroku(無料枠)のスリープを阻止する

Last updated at Posted at 2017-09-11

Herokuのサーバーはスリープします

Herokuの無料枠では30分サーバーにアクセスがないとサーバーがスリープしてしまいます。
これを阻止する方法はいくつかあります。

  1. Herokuに課金する
  2. アドオンを追加する
  3. Google apps scriptなどで定期的にアクセスする。

今回はDjango側でスリープを阻止する方法を紹介します

仕組み

今回の方法は、サーバーのスタート時に別スレッドで定期的に自サーバーにアクセスするというものです。

wsgi.pyに別スレッドで定期処理を実行するようにコードを書きます。参考

実装

wsgi.py
import os
import threading
import requests
import time

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hoge.settings")

application = get_wsgi_application()

def awake():
    while True:
        try:
            print("Start Awaking")
            requests.get("http://hogefuga.herokuapp.com/")
            print("End")
        except:
            print("error")
        time.sleep(300)

t = threading.Thread(target=awake)
t.start()

このコードでは300秒(5分)間隔で自サーバーにアクセスしています。
これでサーバーのスリープを阻止できます。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4