2017-03-03 2 views
0

私は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 

答えて

0

FlickrAPIパッケージはそのOAuthTokenCache(コードhereを参照)のためのSQLiteを使用しています。そして、SQLiteはHerokuによってサポートされていないと思われます(ファイルシステムはHerokuの一時的なものです)。https://devcenter.heroku.com/articles/sqlite3

alternatives in PyPiを見てください。

+0

ありがとうございます!ですから、私は1)sqlite3を使用しないのが好きなものが見つかるまで、あるいは2)sqlite3をサポートするデプロイメントソリューションを使うことができます。私は今#1でおもしろいですが、何らかの理由で私が使用しているflickrapiモジュールを使い続けたいと思っていたら、他にもお勧めのソリューションがありますか? –

関連する問題