正如标题所述,我有3个容器在码头运行,一个用于rails,一个用于postgres db,一个用于redis。我可以在执行Job.perform_async的任务中排队,但由于某种原因,我的任务将无限期地停留在队列中。我检查过了,我的Redis容器已经启动并运行。
我的工作:
class HardJob
include Sidekiq::Job
def perform(*args)
puts 'HardJob'
end
endsidekiq的初始化程序:
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我的船坞-写作:
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?
发布于 2022-11-04 08:16:50
Sidekiq是自己的进程,需要自己启动,就像web服务器进程一样。将如下内容添加到坞-组合中:
sidekiq:
depends_on:
- 'db'
- 'redis'
build: .
command: bundle exec sidekiq
volumes:
- .:/src/myapp
environment:
- REDIS_URL_SIDEKIQ=redis://redis:6379/1或者-当您能够使用Sidekiq的最新版本(>= 7.0)时,您可能希望尝试与您的美洲狮when服务器一起运行Sidekiq的新Sidekiq嵌入式模式。
发布于 2022-11-04 05:20:06
由于某些原因,Sidekiq正在寻找错误的队列名。尝试将其添加到config/ file kiq.yml文件中。
:queues:
- defaulthttps://stackoverflow.com/questions/74309841
复制相似问题