我用 uwsgi 服务器运行 django。我的代码包含许多带有 urllib2 的 api 调用,如下所示:
with closing(urllib2.urlopen(request, timeout=1)) as f:
content = f.read()
即使我设置了套接字超时,我也看到请求需要更多我想要的秒数。我猜这是因为超时限制了套接字连接而不是数据读取。
我想限制这个代码块。试图用它来实现它,signal.SIGALRM
但它不适用于 uwsgi (我没有运行enable-threads
)。但它适用于 Apache+mod_wsgi。线程超时看起来不可靠。
没有错误,SIGALRM 只是忽略了 harakiri 模式。我不擅长阅读 C 源代码,但这里出现这种行为的原因。