Google App Engine上的异步HTTP请求Python

问题描述:

有谁知道如何从Google App Engine发出http请求而不等待响应吗? 它应该像使用http推送数据而没有响应延迟。Google App Engine上的异步HTTP请求Python

我认为this section of the AppEngine docs是你在找什么。

+1

异步请求仍会阻止发送的响应。它只允许您在等待其他数据到达时进行处理。至少这是我从文档中得到的。 – Matt 2011-02-24 17:10:46

+0

@envalid:我的印象是,OP不关心获得回应。他将其定性为“推”操作。 – 2011-02-24 17:13:06

+1

'如果在请求处理程序退出时有任何URL提取请求未完成,则应用程序服务器将等待所有剩余的请求返回或到达其截止日期,然后再向用户返回响应。'Src:http://code.google.com /appengine/docs/python/urlfetch/overview.html – Matt 2011-02-24 20:27:01

你可以做的是在请求处理程序中排队一个任务,并接收任何数据(使用deferred library)。只要任务成功排队,您可以返回'200 OK'响应并准备好下一次推送。

我之前通过设置URLFetch并为截止日期参数设置了一个非常低的值来完成此操作。我把0.1作为我的价值,所以100ms。您还需要将URLFetch包装在try/catch中,因为请求会超时。

使用任务队列。如果你只是在推动数据,那么等待响应是没有意义的。

+0

@Triptich:是的!我试过了。但是有一个缺点。在使用taskqueue时,与异步请求相比,您花费的CPU时间更多。谢谢! – 2011-02-26 20:52:45

+0

@Vyalov这可能是这样,但你应该考虑到CPU时间非常便宜,并且使用任务队列还有其他好处。 – Triptych 2011-02-26 21:05:31