heroku和sidekiq如何在我的主dyno之外运行工作?

时间:2016-07-20 21:05:56

标签: ruby-on-rails heroku sidekiq

我很困惑heroku和sidekiq如何工作。我的Procfile看起来像:

web: bundle exec puma -C config/puma.rb
worker: bundle exec sidekiq -e $RAILS_ENV

现在在我的轨道中,我在我的代码中运行我的sidekiq作业,如:

SomeWorker.perform_async(some.id)

现在这会自动以某种方式使这个过程在worker dyno中运行吗?

如果是的话,它如何知道如何运行此过程?

令人困惑,因为当我在我的主git文件夹中时,我可以运行heroku命令,我知道这是针对我的web dyno,但是我如何看到我的工作人员dyno的日志或者这些是否在我的同一个dyno中日志?

1 个答案:

答案 0 :(得分:2)

当您设置Procfile时,您告诉Heroku设置两种类型的dynos:webworker。这些可能是使用相同的Rails应用程序代码,但是使用不同的命令启动(bundle exec pumabundle exec sidekiq)。然后,您可以扩展每种类型的进程所需的许多VM(dynos)。

将两者结合在一起的胶水是Redis。当您从SomeWorker.perform_async(some.id)进程运行web时,您将向Redis添加一条描述要运行的作业的记录。您的worker进程会监视Redis以获取新记录,然后对其进行处理。

Heroku日志显示所有正在运行的dynos的日志。因此,您应该看到来自webworker进程的日志混合在一起。