我有一个rails应用程序部署到heroku(免费版本)。
我有一些通过sidekiq工作的邮件。
我有一个记录,可能会在2020年9月5日到期。
我的工人被安排在前一天发邮件。所以在2020年9月4日,它应该运行worker并发送邮件。
但是,在我看来,一旦dyno停止运行,这些作业将不再在所需的时间运行。换句话说,在2020年9月4日,主服务器没有运行,因此redis服务器/sidekiq似乎无法工作。
我做错什么了?我想对将在指定时间发生的作业进行排队,而不管主服务器是否正在运行/app是否正在使用。
1条答案
按热度按时间pcww981p1#
sidekiq和redis在主web服务器的不同服务器上运行。您可以运行sidekiq服务器而不必运行web服务器。redis通常在heroku中作为附加组件运行,不会被列为dyno。在heroku的参考资料下,它应该列出你的应用程序正在使用的所有dynos。您应该看到一个web服务器和一个sidekiq dynos都列出了。要只运行sidekiq,请从heroku控制台关闭web服务器dynos。记住,你仍然需要一种方法来排队你的sidekiq工作。通常,它们会在web上由用户交互排队。如果您没有运行web服务器,您可以考虑使用类似clockwork gem的东西来触发您的作业。