这很奇怪。标题说明了大部分内容,我的代码应该说明其余部分。这是我的main.py
文件:
from google.appengine.api import urlfetch
import webapp2
import jinja2
import json
import os
jinja_environment = jinja2.Environment(
loader=jinja2.FileSystemLoader(os.path.dirname(__file__)))
class MainPage(webapp2.RequestHandler):
def get(self):
response = urlfetch.fetch("http://localhost:8080/api/helloworld?name=totty", method=urlfetch.GET)
if response.status_code == 200:
result = json.loads(response.content)
template_values = {'response': result['msg']}
template = jinja_environment.get_template('index.html')
self.response.out.write(template.render(template_values))
app = webapp2.WSGIApplication(
[('/', MainPage)],
debug=True)
这是我的api.py
文件:
import webapp2
import json
class HelloWorld(webapp2.RequestHandler):
def get(self):
name = self.request.get('name') or 'world'
msg = "Hello {}!".format(name)
payload = json.dumps({'msg': msg})
# payload = json.dumps({'dir': str(dir(self.request)), 'body': str(self.request.body), 'name': str(self.request.arguments())})
self.response.headers['Content-Type'] = 'application/json'
self.response.write(payload)
app = webapp2.WSGIApplication(
[('/api/helloworld', HelloWorld)],
debug=True)
如果我的app.yaml
文件有帮助:
application: stacksort
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /api/.*
script: api.app
- url: /.*
script: main.app
libraries:
- name: webapp2
version: latest
- name: jinja2
version: latest
即使我添加deadline=30
到我的urlfetch
通话中,也没有任何变化。我使用 JQuery 测试了 API httpie
,它工作得非常好,并且在 5 秒内返回。
我看了看其他问题,但我仍然跌跌撞撞地陷入黑暗。帮助、提示或重构将不胜感激。
我计划添加对 StackEchange 搜索 API 的调用,所以我怀疑问题也可能出现在那个时候。如果有更好的方法可以做到这一点,请告诉。谢谢。