Ruby 我应该在Heroku上使用worker还是web dyno?

Ruby 我应该在Heroku上使用worker还是web dyno?,ruby,performance,heroku,Ruby,Performance,Heroku,我不确定我的应用程序是否适合worker或web dyno。假设我有一个web应用程序,它可以分析来自用户的纯文本,并使用分析过的关键字查找我的数据库中的所有文档,这些文档是全文索引的。现在这个过程可能需要一些时间,因为在我获得所有文档之后,我必须过滤掉一些用户不想看到的文档。我还使用Levenshtein距离算法计算关键字返回文档的相关性。因此,我无法提前计算并缓存结果 这个过程对我来说就像一个同步的过程。因此,我不确定如何通过在worker dyno中将进程排队来加快速度?因为用户必须在网页

我不确定我的应用程序是否适合worker或web dyno。假设我有一个web应用程序,它可以分析来自用户的纯文本,并使用分析过的关键字查找我的数据库中的所有文档,这些文档是全文索引的。现在这个过程可能需要一些时间,因为在我获得所有文档之后,我必须过滤掉一些用户不想看到的文档。我还使用Levenshtein距离算法计算关键字返回文档的相关性。因此,我无法提前计算并缓存结果

这个过程对我来说就像一个同步的过程。因此,我不确定如何通过在worker dyno中将进程排队来加快速度?因为用户必须在网页上等待才能看到结果。有时我会收到H12请求超时


我认为在这种情况下,增加网络动态是没有帮助的,因为即使它只是一个用户,它也将是一个进程,有时它会超过30秒。但我也不知道如何使用worker dyno使应用程序更快。如有任何建议,将不胜感激

增加dynos在这方面没有帮助。如果这是用户需要等待的事情,那么最好让一个工作人员来完成这项工作,并在完成后异步更新用户。您可能无法通过这种方式使其更快(尽管您可能可以,因为您的工作加载的代码更少?),但您不会遇到H12,用户也不会被困在页面上等待渲染,不知道它是否需要很长时间,或者是否已损坏

这就是我现在正在做的。因此,当用户点击页面时,我立即显示页面,并使用Ajax获取结果。所以,一直都有加载图标。但我想ajax请求也是一个web过程。因此,这意味着当ajax请求被触发时。我必须将其放入worker中,并在完成后返回结果?您可以尝试在页面加载时触发作业(创建作业,由后台worker拾取),然后使用ajax轮询url,该url将返回键(通过触发生成)的数据(如果有数据)。当worker完成时,它将使用该键/数据创建一个记录。因此,web流程仅限于1)创建作业2)您有数据吗?