如何在Google App Engine上使用urllib2声明超时?

sys*_*out 5 google-app-engine urllib2 feedparser urlfetch

我知道它urllib2可以在Google App Engine上作为Urlfetch的包装使用,如您所知,Universal Feedparser使用urllib2.

你知道在urllib2上设置超时的方法吗?urllib2上
timeout参数是否已移植到Google App Engine版本上?

我对方法不感兴趣:

rssurldata = urlfetch(rssurl, deadline=..)
feedparser.parse(rssurldata)
Run Code Online (Sandbox Code Playgroud)

Nic*_*son 3

据我所知,没有简单的方法可以做到这一点,因为包装器没有提供传递超时值的方法。一种黑客选项是对 urlfetch API 进行猴子补丁:

old_fetch = urlfetch.fetch
def new_fetch(url, payload=None, method=GET, headers={},
          allow_truncated=False, follow_redirects=True,
          deadline=10.0, *args, **kwargs):
  return old_fetch(url, payload, method, headers, allow_truncated,
                   follow_redirects, deadline, *args, **kwargs)
urlfetch.fetch = new_fetch
Run Code Online (Sandbox Code Playgroud)