heroku app.py 调用另一个python脚本,JSON函数失败
有没有简单的教程教我怎么在Heroku上使用Requests的JSON功能?
我的app.py在调用另一个使用Requests库的json()的Python脚本时,Heroku出现了依赖错误。
Heroku的日志是:
2014-03-11T17:56:57.518693+00:00 app[web.1]: 2014-03-11 17:56:57 [7] [ERROR] Error handling request
2014-03-11T17:56:57.518693+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/sync.py", line 125, in handle_request
2014-03-11T17:56:57.518693+00:00 app[web.1]: Traceback (most recent call last):
2014-03-11T17:56:57.518693+00:00 app[web.1]: respiter = self.wsgi(environ, resp.start_response)
2014-03-11T17:56:57.518693+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1687, in wsgi_app
2014-03-11T17:56:57.518693+00:00 app[web.1]: response = self.full_dispatch_request()
2014-03-11T17:56:57.518693+00:00 app[web.1]: response = self.make_response(self.handle_exception(e))
2014-03-11T17:56:57.518965+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1360, in full_dispatch_request
2014-03-11T17:56:57.518693+00:00 app[web.1]: return self.wsgi_app(environ, start_response)
2014-03-11T17:56:57.518693+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1689, in wsgi_app
2014-03-11T17:56:57.518693+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1701, in __call__
2014-03-11T17:56:57.518965+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1358, in full_dispatch_request
2014-03-11T17:56:57.518965+00:00 app[web.1]: rv = self.handle_user_exception(e)
2014-03-11T17:56:57.518965+00:00 app[web.1]: File "/app/app.py", line 66, in processData
2014-03-11T17:56:57.518965+00:00 app[web.1]: latAndLong = getLatLong.getLatLong(str(request.form.get('city')))
2014-03-11T17:56:57.518965+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/flask/app.py", line 1344, in dispatch_request
2014-03-11T17:56:57.518965+00:00 app[web.1]: return self.view_functions[rule.endpoint](**req.view_args)
2014-03-11T17:56:57.518965+00:00 app[web.1]: rv = self.dispatch_request()
2014-03-11T17:56:57.518965+00:00 app[web.1]: myfile = r.get_json()
2014-03-11T17:56:57.519151+00:00 app[web.1]: AttributeError: 'Response' object has no attribute 'get_json'
2014-03-11T17:56:57.518965+00:00 app[web.1]: File "/app/getLatLong.py", line 16, in getLatLong
2014-03-11T17:56:57.519447+00:00 heroku[router]: at=info method=POST path=/getsurveyresults host=censusmappingandmarketing.herokuapp.com request_id=1606f734-83bc-4d9c-a6af-8149e0f200e2 fwd="208.91.53.169" dyno=web.1 connect=1ms service=178ms status=500 bytes=238
出问题的代码是这个:
r = requests.get(link)
myfile = r.json()
这让我感到困惑,因为在本地运行时一切都很好。
1 个回答
0
这个问题的解决办法其实很简单。我需要在我的requirements.txt文件里添加requests这个库。这就是为什么它不认识json()这个函数,因为json()是requests库里的一个功能。
现在我的requirements.txt文件看起来是这样的:
Flask==0.9
Jinja2==2.6
Werkzeug==0.8.3
gunicorn==0.17.2
requests==2.2.1