云服务 heroku 的 H12 Timeout 错误.如何将时间设置超过 30 秒?

engin123456789 · 2012年01月05日 · 最后由 engin123456789 回复于 2012年02月04日 · 3005 次阅读

做一个从学校图书馆抓取数据的程序,用 open-uri 来打开网页,再抓取内容,但是这个时间远超出 30s.

用 sinatra 做服务器,是不是有哪种方法可以让它用 worker 在后台读,读完之后再返回给客户端。而不是根据 timeout 就停止请求?

再或者直接修改这个 timeout 值?

解决了: heroku 的 timeout 貌似是服务器转向 Nginx 里的设置,实际上在 dynos 中仍然运行着你未完的操作. 所以可以: (1) 在服务器上另开一个线程,sleep 20 秒,如果处理结果还没结束就返回一个"waiting", (2) 客户端收到 waitting 信息后,settimeout 5 秒后用 ajax 重连 (3) 服务器在新开的线程中将处理结果写到一个 hash 的 application 变量中,再次连接时将信息取出并删除变量. 这样就可以了...(貌似本身就是很弱智的一个问题)

需要 登录 后方可回复, 如果你还没有账号请 注册新账号