[英]How does heroku and sidekiq run the jobs outside of my main dyno?
我对heroku和sidekiq的工作方式感到困惑。 我的Procfile看起来像:
web: bundle exec puma -C config/puma.rb
worker: bundle exec sidekiq -e $RAILS_ENV
现在,在我的轨道中,我在我的代码中运行sidekiq作业,例如:
SomeWorker.perform_async(some.id)
现在,这会自动以某种方式使此过程在工作者动态中运行吗?
如果是的话,它怎么知道将其淘汰?
这很令人困惑,因为当我位于主git文件夹中时,我可以运行heroku命令,并且我知道这是针对我的Web dyno的,但是接下来我如何查看我的worker dyno的日志,或者将它们显示在我的dyno日志中?
设置Procfile
,您要告诉Heroku设置两种类型的dynos: web
和worker
。 它们可能使用相同的Rails应用程序代码,但使用不同的命令启动( bundle exec puma
与bundle exec sidekiq
)。 然后,您可以扩展每种过程类型所需的许多VM(动态数)。
将两者结合在一起的胶水是Redis。 当您从web
流程运行SomeWorker.perform_async(some.id)
,您正在向Redis添加一条记录以描述要运行的作业。 您的worker
进程监视Redis是否有新记录,然后对其进行处理。
Heroku日志显示所有正在运行的测功机的日志。 因此,您应该看到来自web
和worker
进程的日志混在一起。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.