heroku上的后台工作网络是如何知道的's结束了

Background job on heroku how does the web know it's finished

本文关键字:结束了 何知道 后台 工作 网络 heroku      更新时间:2023-09-26

因此,我创建的这个应用程序有时需要提取提要,而在heroku上总是超时,因为xml解析器需要时间。因此,每次加载页面时,我都会更改为通过Ajax进行异步加载。我仍然从Ajax调用中得到H12错误。现在我正在考虑使用Resque在后台运行作业。我可以做到这一点,但我怎么知道工作已经完成,这样我就可以通过AJAX将处理后的提要拉到html页面上呢?

不确定我的问题是否清楚,那么web层如何知道工作已经完成,它应该发出信号,例如(javascript中的onComplete)来填充页面上的内容?

有很多方法可以实现

  • JavaScript可以使用AJAX来轮询服务器,询问结果,服务器可以用"尚未"或结果进行响应。你一直在问,直到你得到结果。

  • 你可以看看Juggernaut(http://juggernaut.rubyforge.org/)它可以让你的服务器推送到客户端

  • 网络套接字是HTML5处理这个问题的方法。有一些宝石可以让你开始使用最佳RubyonRails WebSocket工具

此处存在架构问题。H12的原因是用户坐在那里的时间不会超过30秒。

通过将长时间运行的任务移动到Resque队列中,可以使其与前端web进程断开连接——由于进程隔离,两者无法通信。

因此,你需要审视自己在做什么以及如何做。例如,如果你正在提取一个提要,你能在用户需要看到输出并以某种方式缓存结果之前的某个时候这样做吗?或者你能接受用户对提要的请求,然后在你有数据让他们查看时给他们发电子邮件吗?等等。

你在这里遇到的问题是,你的用户要求的东西需要比合理的时间更长的时间才能完成,所以你需要好好看看你在做什么以及如何做。