heroku app.py 调用另一个python脚本,JSON函数失败

2 投票
1 回答
622 浏览
提问于 2025-04-17 21:44

有没有简单的教程教我怎么在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

撰写回答