這非常奇怪。標題說大部分,我的代碼應該說剩下的。這是我的main.py
文件:GAE應用程序本地提高了DeadlineExceededError並部署了DownloadError
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
呼叫。我使用httpie
和JQuery測試了API,它工作得很好,並在5秒內返回。
我看着其他問題,但我仍然陷入黑暗中。幫助,提示或重構,將不勝感激。
我打算增加對StackEchange Search API的調用,所以我懷疑這個問題也可能在那個時候出現。如果有更好的方法來做到這一點,請告訴。謝謝。
你建議我做什麼呢? – 2013-04-05 07:26:20
我不確定你想要達到什麼目的。我認爲你應該分開API請求處理程序及其實現對象。然後你可以直接調用api實現。順便說一下,你將不會有任何問題獲取StackExchange API。 – 2013-04-05 07:37:46
我只想讓代碼的一部分使用SE API並處理它,然後將它傳遞給其他接口部分。我想從處理中分離UI,因爲我想要一個類似AJAX的界面。 – 2013-04-05 08:28:10