Je construis une application web de base avec Flask. Entrez un mot-clé et votre adresse e-mail, cliquez sur Soumettre, et un employé Céleri (configuré pour utiliser Redis) récupère des images de Flickr, les télécharge, les zippe et envoie le fichier zip en pièce jointe à l'e-mail fourni.Pourquoi mon application Flask est-elle déployée sur Heroku échouant sur sqlite3.OperationalError lorsque mon application n'utilise même pas une base de données?
Je n'ai pas configuré mon application pour utiliser une base de données, je me suis dit que je n'en avais pas besoin. Lorsque je tente de déployer mon application à Heroku, cependant, je reçois les éléments suivants de mes journaux d'erreur:
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
sont des applications Flask doivent avoir une base de données configurée avant de pouvoir être déployés pour Heroku? Cela semble ridicule.
Il semble que ce soit un problème avec FlickrAPI. L'erreur semble être levée quand FlickrAPI utilise mon api_key et son secret pour m'authentifier, mais il n'a jamais jeté cette erreur quand je testais en local, et je ne comprends pas pourquoi l'accès à l'API nécessiterait une base de données pour suivre un tokencache et oauth_tokens de toute façon. Dois-je utiliser un autre module FlickrAPI? Ai-je besoin d'utiliser une base de données dans mon application? Je suis nouveau sur Python et Flask, donc il me manque probablement quelque chose de basique.
Toute aide serait grandement appréciée!
Mon 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
Merci beaucoup! Donc je peux soit 1) jouer avec cette liste d'alternatives jusqu'à ce que j'en trouve une que j'utilise qui n'utilise pas sqlite3, ou 2) Je peux utiliser une solution de déploiement qui supporte sqlite3. Je vais jouer au n ° 1 maintenant, mais y a-t-il d'autres solutions de déploiement que vous recommanderiez si, pour une raison ou une autre, je voulais continuer à utiliser le module flickrapi que j'utilise? –