【问题标题】:Dequeue active job with Active job in Rails在 Rails 中使用活动作业出列活动作业
【发布时间】:2016-10-12 10:57:16
【问题描述】:

我可以使用perform_later 将作业排入队列,但它根本没有出队。 另外我设置了WelcomeEmailJob.set(wait: 1.seconds) 没有启动。

tail -f log/development.log

[ActiveJob] Enqueued WelcomeEmailJob (Job ID: 7df3d8a5-8eaa-4cbe-b419-83f0326b5376) to Sidekiq(default)
[ActiveJob] Enqueued WelcomeEmailJob (Job ID: 29100edd-9896-4acb-b16b-4695e7be5757) to Sidekiq(default)
[ActiveJob] Enqueued WelcomeEmailJob (Job ID: fa57ef26-7134-442a-9bde-858fa487f5d4) to Sidekiq(default)
[ActiveJob] Enqueued WelcomeEmailJob (Job ID: d645e315-28ad-43ce-9426-e4a338d52bdc) to Sidekiq(default)
[ActiveJob] Enqueued WelcomeEmailJob (Job ID: 12b89c71-96c6-4ad5-a655-f0d301d10543) to Sidekiq(default)
[ActiveJob] Enqueued WelcomeEmailJob (Job ID: f9d60fd0-9633-4b65-80f8-c0d5bdbc473b) to Sidekiq(default)
[ActiveJob] Enqueued WelcomeEmailJob (Job ID: 4385647c-bfc2-425e-894f-000d0ccb2095) to Sidekiq(default)
[ActiveJob] Enqueued WelcomeEmailJob (Job ID: 87624fe0-44ea-4eb9-a97e-fcada60a9354) to Sidekiq(default)

我应该如何使作业出队并查看列表?

class WelcomeEmailJob < ActiveJob::Base
  queue_as :default

  def perform
    # Do something later
    logger.warn  "TEST WARNING"
  end
end

docker-compose.rb

services:
  web:
    depends_on:
      - 'postgres'
      - 'redis'
    build: .
    command: rails server -b 0.0.0.0
    ports:
      - '3000:3000'
    volumes:
      - '.:/usr/src/app'
    env_file:
      - '.env'

  postgres:
    image: 'postgres:9.4.4'
    environment:
      POSTGRES_USER: 'postgres'
    ports:
      - '5432:5432'

  redis:
    image: 'redis:3.2-alpine'
    command: redis-server --requirepass yourpassword
    ports:
      - '6379:6379'

  sidekiq:
    depends_on:
      - 'postgres'
      - 'redis'
    build: .
    command: bundle exec sidekiq -C config/sidekiq.yml.erb
    volumes:
      - '.:/usr/src/app'
    env_file:
      - '.env'

更新

config/initializers/sidekiq.rb

sidekiq_config = { url: 'redis://127.0.0.1:6379' }

Sidekiq.configure_server do |config|
    config.redis = sidekiq_config
end

Sidekiq.configure_client do |config|
    config.redis = sidekiq_config
end

【问题讨论】:

  • 你真的在运行一个worker来处理队列吗? bundle exec sidekiq
  • 是的 'bundle exec sidekiq -C config/sidekiq.yml.erb'
  • 显示 sidekiq.yml.erb 文件。

标签: ruby-on-rails docker-compose sidekiq rails-activejob


【解决方案1】:

您应该运行 sidekiq 工作程序。 bundle exec sidekiq

【讨论】:

  • 我在 docker-compose 文件中执行了bundle exec sidekiq -C config/sidekiq.yml.erb
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-15
  • 2015-07-03
  • 2015-01-17
  • 2016-11-29
  • 2016-09-20
  • 2019-10-19
相关资源
最近更新 更多