正如标题所说,我在docker中运行了3个容器,1个用于rails,1个用于postgres db,1个用于redis。我可以在Job.perform_async
中对作业进行排队,但由于某种原因,我的作业无限期地停留在排队中。我检查了一下,我的Redis容器已经启动并运行。
我的工作:
class HardJob
include Sidekiq::Job
def perform(*args)
puts 'HardJob'
end
end
sidekiq的初始值设定项:
Sidekiq.configure_server do |config|
config.redis = { url: (ENV["REDIS_URL"] || 'redis://localhost:6379') }
end
Sidekiq.configure_client do |config|
config.redis = { url: (ENV["REDIS_URL"] || 'redis://localhost:6379') }
end
我的docker-compose:
version: '3.0'
services:
web:
build: .
entrypoint: >
bash -c "
rm -f tmp/pids/server.pid
&& bundle exec rails s -b 0.0.0.0 -p 3000"
ports:
- 3000:3000
volumes:
- .:/src/myapp
depends_on:
- db
- redis
links:
- "db:db"
environment:
REDIS_URL: 'redis://redis:6379'
db:
image: postgres:11
environment:
POSTGRES_PASSWORD: 'postgres'
volumes:
- db_data:/var/lib/postgresql/data
ports:
- 5432:5432
redis:
image: "redis"
volumes:
db_data:
redis:
driver: local
我还在我的3个环境中设置了config.active_job.queue_adapter = :sidekiq
。
有什么线索吗?先谢谢了
更新
看起来在我的Rails终端中运行sidekiq -q default
起作用了。我如何配置Docker总是运行sidekiq?
2条答案
按热度按时间bzzcjhmw1#
Sidekiq是一个独立的进程,需要独立启动,就像web服务器进程一样。
或者--当你能够使用最新版本的Sidekiq(〉= 7.0)时--你可能想尝试一下新的Sidekiq embedded mode,它和你的puma Web服务器一起运行Sidekiq。
tct7dpnv2#
由于某种原因,Sidekiq正在查找错误的队列名称。请尝试将其添加到您的 config/sidekiq.yml 文件中。