私はFlaskで基本的なWebアプリケーションを構築しています。タグと電子メールを入力してSubmitを押すと、Redisを使用するように設定されたセレラの作業者がFlickrの画像を取得してダウンロードし、zipして、添付ファイルとしてzipファイルを添付ファイルとして送信します。なぜ私のアプリケーションがデータベースを使用しない場合でも、FlaskのアプリケーションをHerokuにデプロイするとsqlite3.OperationalErrorに失敗しますか?
データベースを使用するようにアプリケーションを構成していないため、必要ないと思っていました。私はHerokuのに自分のアプリケーションを展開しようとすると、しかし、私は私のエラーログから次を得る:
2017-03-03T18:33:49.500689+00:00 app[web.1]: Traceback (most recent call last):
2017-03-03T18:33:49.500691+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 557, in spawn_worker
2017-03-03T18:33:49.500692+00:00 app[web.1]: worker.init_process()
2017-03-03T18:33:49.500692+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 126, in init_process
2017-03-03T18:33:49.500693+00:00 app[web.1]: self.load_wsgi()
2017-03-03T18:33:49.500694+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 136, in load_wsgi
2017-03-03T18:33:49.500694+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2017-03-03T18:33:49.500695+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
2017-03-03T18:33:49.500696+00:00 app[web.1]: self.callable = self.load()
2017-03-03T18:33:49.500697+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
2017-03-03T18:33:49.500697+00:00 app[web.1]: return self.load_wsgiapp()
2017-03-03T18:33:49.500698+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
2017-03-03T18:33:49.500699+00:00 app[web.1]: return util.import_app(self.app_uri)
2017-03-03T18:33:49.500699+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/util.py", line 357, in import_app
2017-03-03T18:33:49.500700+00:00 app[web.1]: __import__(module)
2017-03-03T18:33:49.500700+00:00 app[web.1]: File "/app/app.py", line 31, in <module>
2017-03-03T18:33:49.500701+00:00 app[web.1]: flickr = flickrapi.FlickrAPI(flickr_key, flickr_secret, format='parsed-json')
2017-03-03T18:33:49.500702+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flickrapi/core.py", line 209, in __init__
2017-03-03T18:33:49.500702+00:00 app[web.1]: self.flickr_oauth = auth.OAuthFlickrInterface(api_key, secret, self.token_cache)
2017-03-03T18:33:49.500703+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flickrapi/auth.py", line 166, in __init__
2017-03-03T18:33:49.500704+00:00 app[web.1]: if oauth_token.token:
2017-03-03T18:33:49.500704+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flickrapi/tokencache.py", line 180, in token
2017-03-03T18:33:49.500705+00:00 app[web.1]: (self.api_key, self.lookup_key))
2017-03-03T18:33:49.500709+00:00 app[web.1]: sqlite3.OperationalError: no such table: oauth_tokens
は、彼らがHerokuのに展開する前に構成されたデータベースを持っているために必要なフラスコアプリケーションはありますか?それはばかげているようだ。
FlickrAPIに問題があるようです。 FlickrAPIが私のapi_keyとシークレットを使って私を認証したときにスローされたようですが、ローカルでテストしていたときにそのエラーを投げたことはありませんでした。なぜAPIアクセスがデータベースにトークンキャッシュを記録する必要があるのか理解できませんとにかくoauth_tokens。
別のFlickrAPIモジュールを使用する必要がありますか?アプリケーションでデータベースを使用する必要がありますか?私はPythonとFlaskには新しいので、おそらく基本的なものがありません。
ご協力いただければ幸いです!
マイrequirements.txt:
Flask==0.10.1
Flask-Mail==0.9.1
Jinja2==2.7.3
MarkupSafe==0.23
Werkzeug==0.9.6
amqp==1.4.6
anyjson==0.3.3
argparse==1.2.1
billiard==3.3.0.19
blinker==1.3
celery==3.1.17
click==6.7
flickrapi==2.2.1
gunicorn==19.6.0
itsdangerous==0.24
kombu==3.0.30
oauthlib==2.0.1
pytz==2014.10
ratelimit==1.2.0
redis==2.10.3
requests==2.13.0
requests-oauthlib==0.8.0
requests-toolbelt==0.7.1
six==1.10.0
vine==1.1.3
ありがとうございます!ですから、私は1)sqlite3を使用しないのが好きなものが見つかるまで、あるいは2)sqlite3をサポートするデプロイメントソリューションを使うことができます。私は今#1でおもしろいですが、何らかの理由で私が使用しているflickrapiモジュールを使い続けたいと思っていたら、他にもお勧めのソリューションがありますか? –