Heroku:我有一个超过30秒的请求,它会中断

don*_*ald 5 heroku ruby-on-rails-3

我有一个超过30秒的请求,它会中断.

这是什么解决方案?我不确定我是否会添加更多的dynos.

谢谢

Ark*_*rka 7

您可能应该看到关于此的Heroku devcenter文章,因为信息将更有帮助,这里是一个小摘要:

要回答超时问题:

Cedar支持长轮询和流式响应.您的应用程序有一个最初的30秒窗口,以单个字节响应客户端.发送每个字节后(从客户端收到或由您的应用程序发送),您重置一个滚动的55秒窗口.如果在55秒窗口期间没有数据发送,则终止连接.

(也就是说,如果你有Cedar而不是Aspen或Bamboo,你可以每隔30秒左右发送一个字节来欺骗系统.它可能会起作用.)

要回答你的dynos问题:

如果遇到请求超时,则额外的并发性无济于事.你可以将你的dynos调到最大,你仍然会得到一个请求超时,因为它是一个单一的请求,无法在正确的时间内提供服务.额外的dynos会增加您的并发性,而不是您的请求速度.

(也就是说,不要费心添加更多的dynos.)

根据请求超时:如果您正在做一些大事,请检查您的代码是否存在无限循环:

如果是这样,您应该将这个繁重的工作移到后台作业中,后台作业可以从您的Web请求异步运行.请参阅排队以获取详细信息