在Heroku上运行连续运行的工作进程
在Heroku上运行连续工作进程的最佳方法是什么? 我的应用程序需要这个过程全天候运行,所以delayed_job或其他队列似乎有点矫枉过正。 我可以通过Heroku控制台手动触发该过程,我可以分离它自己运行。
最好,我想将这个单一方法调用分配给一个dyno,这样当我的应用程序启动时,它会启动额外的worker-dyno,然后调用我的单个方法并开始哼唱。 但不确定如何分配该方法调用?
我可以使用延迟的工作,它可以解决所有问题,但似乎我需要的是一个直接(当被调用)而没有安排的单一活动。 但也许这是唯一的方法。
在您的Procfile中,您可以为额外的工作人员作业添加单独的流程
# Procfile web: ... worker: ... collector: bundle exec ruby stats_collector.rb -p $PORT # or any other command
然后,您可以使用$ heroku ps:scale collector=1
扩展此过程。 它将单独运行并在每次部署时停止并重新启动。 我会说你的应用程序所做的事情必须是安全的,以便在任何时候使用如此长时间运行的过程中断。
如果中断可能会导致问题(例如,如果重新启动只需要完成两次,那么使用例如Sidekiq排队消息的“传统”后台工作人员可能是一个更安全的解决方案。
更新
如果要在Rails应用程序的上下文中以非交互方式执行长时间运行的代码,可以使用rails runner命令。
# Procfile web: ... worker: ... collector: bundle exec rails runner 'MyModel.my_long_running_job'
- 尝试使用自定义buildpack时出错
- ActiveRecord :: StatementInvalid:PG :: ReadOnlySqlTransaction: – 即使在取消关注后,Heroku数据库仍然只读
- 推送到Heroku时:应用程序中发生错误,无法提供您的页面。 请稍后重试
- Heroku:您要查找的页面不存在
- Twitter“无法validation您”错误
- `parse_rackup_file’:rackup文件(config.ru)不可读(ArgumentError)
- Ruby on Rails,Paperclip,Heroku,GitHub和AWS – 保护密钥
- 在git push之后,Heroku没有看到我的变化
- 文件上传进度条与回形针上的回形针