我正在构建带有烧瓶的基本Web应用程序。输入标签和您的电子邮件,点击提交,然后芹菜工人(配置为使用redis)从Flickr中获取图像,下载它们,将其拉动,然后将Zipfile作为所提供的电子邮件的附件发送。
。我尚未将我的应用程序配置为使用任何数据库,我认为我不需要一个数据库。但是,当我尝试将应用程序部署到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访问需要数据库来跟踪TokenCache无论如何,Oauth_tokens。
我是否需要使用其他的flickrapi模块?我需要在应用程序中使用数据库吗?我是Python和Flask的新手,所以我可能缺少一些基本的东西。
任何帮助将不胜感激!
我的要求.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
flickrapi软件包使用sqlite进行oauthtokencache(请参见此处的代码)。似乎SQLite不受Heroku的支持(Filesystem在Heroku中是短暂的):https://devcenter.heroku.com/articles/articles/sqlite3
因此,您可能想查看PYPI中的替代方案。