Sidekiq一直在开发模式中完美地工作。既然我正在尝试在生产中使用它,那么所有的工作都只是坐在队列中,而不是一直在运行。有人能指出我如何解决这个问题的正确方向吗?
答案 0 :(得分:35)
请检查sidekiq进程是否实际运行:
ps aux | grep sidekiq
如果不是,请先尝试在前台运行sidekiq并检查输出。
bundle exec sidekiq -e production
答案 1 :(得分:3)
这个答案看起来很相关: Sidekiq not processing queue 如果Sidekiq没有被告知配置文件(可能需要在生产中使用不同的咒语),那么它可能没有使用正确的队列。
答案 2 :(得分:3)
在很多情况下,对我来说,这是因为我没有在config/sidekiq.yml
中正确声明此特定服务的队列。
答案 3 :(得分:1)
我的解决方案:
1。)查看您应用的Sidekiq Web UI(这是您可以看到作业进入排队状态的事实。)
2.。)手动重试失败的作业
3。)检查运行Sidekiq的服务器上的日志:
(通常这是日志所在的位置,如果你在登台时这样做的话)
tail -f /var/www/yourappname/current/log/staging.log
通常情况下,您会看到更详细的错误消息,说明为什么Sidekiq无法处理排队的作业。在我们的示例中,有一个环境变量指向特定于我们的部署配置的不正确的端点。
答案 4 :(得分:1)
当我结束此页面时,请直奔所有人,以弄清为什么我的Rails Sidkiq作业没有摆脱“排队”的原因。
答案 5 :(得分:0)
使用capistrano-sidekiq
宝石解决了我们的问题
答案 6 :(得分:0)
确保您的应用程序sidekiq进程运行
import QtQuick 2.14
import QtQuick.Controls 2.14
import QtMultimedia 5.14
import AudioHelper 1.0
ApplicationWindow {
visible: true
width: 640
height: 480
MediaPlayer {
id: player
source: "video.mkv"
}
PlayerHelper{
id: playerhelper
qmlplayer: player
}
VideoOutput {
id: videoOutput
source: player
anchors.fill: parent
focus: true
Keys.onSpacePressed: player.playbackState == MediaPlayer.PlayingState ? player.pause() : player.play()
Keys.onLeftPressed: player.seek(player.position - 5000)
Keys.onRightPressed: player.seek(player.position + 5000)
MouseArea{
anchors.fill: parent
acceptedButtons: Qt.LeftButton | Qt.RightButton
onClicked: {
if (mouse.button == Qt.LeftButton){
player.play()
}
else{
var count = playerhelper.audioCount()
var index = playerhelper.audioActive()
while(context_menu.count){
var it = context_menu.takeItem(0)
it.destroy()
}
for(var i = 0; i < count; ++i){
var item = Qt.createQmlObject('import QtQuick 2.13; import QtQuick.Controls 2.13; MenuItem {}', context_menu)
item.text = "Audio " + i;
item.checkable = true
item.checked = i == index
var f = function(it, i){
it.triggered.connect(function (){
playerhelper.setAudioActive(i)
}
)}
f(item, i)
context_menu.addItem(item)
}
context_menu.popup(mouseX, mouseY)
}
}
}
Menu {
id: context_menu
}
}
}
该示例显示仅运行一个sidekiq进程(app1)。如果您的应用程序不在列表中,那么您必须为应用程序启动sidekiq流程,在本示例中为app2
。宝石$ ps aux | grep sidekiq
server 26813 0.0 0.0 14228 1084 pts/11 S+ 11:27 0:00 grep --color=auto sidekiq
server 27936 0.3 0.6 1178904 153240 ? Sl Apr17 46:02 sidekiq 5.2.7 app1 [0 of 10 busy]
使您的生活更轻松:
capistrano-sidekiq
,app2进程将被激活。现在,再次检查
$ cap production sidekiq:start
00:00 sidekiq:start
01 $HOME/.rbenv/bin/rbenv exec bundle exec sidekiq --index 0 --pidfile /var/www/app2/shared/tmp/pids/sidekiq-0.pid --environment produ…
✔ 01 server@103.n.nnn.nnn 0.400s
队列应该已经正常运行