[英]How can I run rails console in Heroku? Rails 5.1 and postgresql
[英]How can I run a loop process on a Heroku instance (Rails 4)?
我有一个Heroku Rails 4应用程序,我想让它连续运行。 它正在处理来自Amazon SQS的数据。
现在,我使用clock.rb连续添加延迟的作业来运行工作程序。 工人准备奔跑10m,然后完成。 由于clock.rb每30秒运行一次,它应该很快重新启动一个新进程。
我的Procfile是:
myworker: QUEUE=myworker bundle exec rake jobs:work
我想知道是否有一种方法可以更改Procfile,以便我可以说“ myworker的每个实例都应在运行时运行此过程。如果它因某种原因而死,请立即重新启动并再次开始处理”
使用Rails 4和Heroku可以做到这一点吗?
一定有……我真的不知道这叫什么,但是肯定有一个名字。
另外,一旦我运行它,是否会有一个好方法说“每隔10m关闭该过程,然后重新启动,只是为了清除内存/重新开始”?
您不必使用“延迟工作”之类的方法进行处理; 您只需要创建一个自定义Rake任务。
例如,在我的工作中,我们的Procfile中有这一行:
jobs_worker: bundle exec rake poll_jobs
我们在lib/tasks
添加了一个file_jobs.rake
文件,该文件执行以下操作:
task poll_jobs: :environment do while true puts "polling jobs" FileJob.poll_status! sleep 10 end end
我们增加了额外的睡眠10,以使替换任务不会立即启动。 但是你可以把它拿出来。 任务完成后,它将自动重新启动。 请记住,如果您经常重启,Heroku可能会生您的气,而不会重新启动您的任务。
您可以轻松地在其中放置一个计时器,或者“在循环中放置它的次数”-在计时器到期时退出,或者您经过循环的次数大于“ x”,然后退出。
那有意义吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.