Django2.0でAPIを使ったページだけがHerokuでエラー
Django2.0で、APIを使って最新情報を取得するページを作成しました。
(ある種のニュースを集めてくるページ)
ローカル(sqlite3使用)ではきちんと情報が表示されて、表示されたリンク先のウェブサイトにも
問題なくアクセスできます。しかしHerokuにデプロイすると、他のページ(ブログページや
トップページ)は問題なく閲覧できますが、このAPIページだけサーバーエラー500になって
しまいます。
本番用データベースはPostgreSQL使用です。
解消方法のヒントを頂けますと幸いです。
手順ですが、
views.pyに
from django.http import HttpResponse
from django.shortcuts import render
from . import models
def cryptohome(request):
import requests
import json
api_request = requests.get("https://min-api.cryptocompare.com/data/v2/news/?lang=EN")
api = json.loads(api_request.content)
return render(request, 'cryptohome.html', {'api':api})
と書きました。その後、
$ pip install djangorestframework
を実行し、
requirements.txtに
djangorestframework==3.8.2
を追記しました。
settings.pyに
INSTALLED_APPS= (
...
'rest_framework',
)
を追加しました。
このprojectのルート内のurls.pyに
from rest_framework import routers, serializers, viewsets
を追加しました。
Databese設定は、
settings.pyにて以下です。
import dj_database_url
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
db_from_env = dj_database_url.config()
DATABASES = {
'default': dj_database_url.config()
}
ALLOWED_HOSTS = ['*']
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
try:
from .local_settings import *
except ImportError:
pass
local_settings.pyは開発環境用の切り替えとして以下を記述してあります。
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
DEBUG = True
...これだとAPIを使ったページだけがエラーとなります。
他に設定が必要な個所や、見直す点があれば、ご教示頂けますと大変幸いです。
よろしくお願い致します。
追記:
$ heroku logs -t で出力されたものは以下です:
2018-07-22T11:56:28.956799+00:00 heroku[web.1]: Restarting
2018-07-22T11:56:28.957370+00:00 heroku[web.1]: State changed from up to starting
2018-07-22T11:56:29.770993+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2018-07-22T11:56:29.790091+00:00 app[web.1]: [2018-07-22 20:56:29 +0900] [8] [INFO] Worker exiting (pid: 8)
2018-07-22T11:56:29.790115+00:00 app[web.1]: [2018-07-22 20:56:29 +0900] [9] [INFO] Worker exiting (pid: 9)
2018-07-22T11:56:29.790117+00:00 app[web.1]: [2018-07-22 11:56:29 +0000] [4] [INFO] Handling signal: term
2018-07-22T11:56:29.991982+00:00 app[web.1]: [2018-07-22 11:56:29 +0000] [4] [INFO] Shutting down: Master
2018-07-22T11:56:30.111945+00:00 heroku[web.1]: Process exited with status 0
2018-07-22T11:56:35.953544+00:00 heroku[web.1]: Starting process with command `gunicorn portfolio.wsgi`
2018-07-22T11:56:39.481831+00:00 app[web.1]: [2018-07-22 11:56:39 +0000] [4] [INFO] Starting gunicorn 19.9.0
2018-07-22T11:56:39.482632+00:00 app[web.1]: [2018-07-22 11:56:39 +0000] [4] [INFO] Listening at: http://0.0.0.0:26403 (4)
2018-07-22T11:56:39.482816+00:00 app[web.1]: [2018-07-22 11:56:39 +0000] [4] [INFO] Using worker: sync
2018-07-22T11:56:39.491396+00:00 app[web.1]: [2018-07-22 11:56:39 +0000] [8] [INFO] Booting worker with pid: 8
2018-07-22T11:56:39.603360+00:00 app[web.1]: [2018-07-22 11:56:39 +0000] [9] [INFO] Booting worker with pid: 9
2018-07-22T11:56:39.954652+00:00 heroku[web.1]: State changed from starting to up
2018-07-22T11:56:58.666392+00:00 heroku[run.1568]: Awaiting client
2018-07-22T11:56:58.728641+00:00 heroku[run.1568]: Starting process with command `python manage.py migrate`
2018-07-22T11:56:58.831682+00:00 heroku[run.1568]: State changed from starting to up
2018-07-22T11:57:07.660418+00:00 heroku[run.1568]: Process exited with status 0
2018-07-22T11:57:07.827065+00:00 heroku[run.1568]: State changed from up to complete
2018-07-22T11:57:14.175890+00:00 heroku[router]: at=info method=GET path="/" host=mysite.herokuapp.com request_id=6769f7c0-9bf4-40db-b96d-26940c7e81ea fwd="126.65.255.215" dyno=web.1 connect=1ms service=719ms status=200 bytes=3986 protocol=https
2018-07-22T11:57:14.173392+00:00 app[web.1]: 10.136.66.169 - - [22/Jul/2018:20:57:14 +0900] "GET / HTTP/1.1" 200 3795 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/604.3.5 (KHTML, like Gecko) Version/11.0.1 Safari/604.3.5"
2018-07-22T11:57:14.542249+00:00 heroku[router]: at=info method=GET path="/assets/js/vendor/popper.min.js" host=mysite.herokuapp.com request_id=eb821792-f306-446e-a5cd-ee0d2df7d92c fwd="126.65.255.215" dyno=web.1 connect=1ms service=144ms status=404 bytes=286 protocol=https
2018-07-22T11:57:14.539924+00:00 app[web.1]: 10.136.66.169 - - [22/Jul/2018:20:57:14 +0900] "GET /assets/js/vendor/popper.min.js HTTP/1.1" 404 104 "https://mysite.herokuapp.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/604.3.5 (KHTML, like Gecko) Version/11.0.1 Safari/604.3.5"
2018-07-22T11:57:15.138026+00:00 heroku[router]: at=info method=GET path="/dist/js/bootstrap.min.js" host=mysite.herokuapp.com request_id=29f47d8f-bed6-4d83-a5b8-dc91def39b38 fwd="126.65.255.215" dyno=web.1 connect=0ms service=20ms status=404 bytes=279 protocol=https
2018-07-22T11:57:15.136952+00:00 app[web.1]: 10.149.166.79 - - [22/Jul/2018:20:57:15 +0900] "GET /dist/js/bootstrap.min.js HTTP/1.1" 404 98 "https://mysite.herokuapp.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/604.3.5 (KHTML, like Gecko) Version/11.0.1 Safari/604.3.5"
2018-07-22T11:57:16.017686+00:00 heroku[router]: at=info method=GET path="/favicon.ico" host=mysite.herokuapp.com request_id=b8dd6a41-3f80-4ac2-a127-370de703bea1 fwd="126.65.255.215" dyno=web.1 connect=1ms service=5ms status=404 bytes=266 protocol=https
2018-07-22T11:57:16.013979+00:00 app[web.1]: 10.30.71.104 - - [22/Jul/2018:20:57:16 +0900] "GET /favicon.ico HTTP/1.1" 404 85 "https://mysite.herokuapp.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/604.3.5 (KHTML, like Gecko) Version/11.0.1 Safari/604.3.5"
2018-07-22T11:57:17.801833+00:00 heroku[router]: at=info method=GET path="/crypto/" host=mysite.herokuapp.com request_id=87974ffb-db18-4f77-9868-a0381648859d fwd="126.65.255.215" dyno=web.1 connect=1ms service=133ms status=500 bytes=234 protocol=https
2018-07-22T11:57:17.799404+00:00 app[web.1]: 10.136.66.169 - - [22/Jul/2018:20:57:17 +0900] "GET /crypto/ HTTP/1.1" 500 27 "https://mysite.herokuapp.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/604.3.5 (KHTML, like Gecko) Version/11.0.1 Safari/604.3.5"
2018-07-22T12:04:55.324460+00:00 heroku[router]: at=info method=GET path="/crypto/" host=mysite.herokuapp.com request_id=d63aa4af-e08e-4f96-b75a-fade50d474f6 fwd="126.65.255.215" dyno=web.1 connect=1ms service=35ms status=500 bytes=234 protocol=https
2018-07-22T12:04:55.322680+00:00 app[web.1]: 10.47.227.241 - - [22/Jul/2018:21:04:55 +0900] "GET /crypto/ HTTP/1.1" 500 27 "https://mysite.herokuapp.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"