- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的应用程序使用Sidekiq
和Sidekiq-Cron
进行后台作业处理。
Sidekiq和Sidekiq-Cron都作为gems包含在我的Gemfile的global部分中,并与bundle install
一起安装在应用程序的rvm gemset中。
从我的Rails应用程序的根目录首次启动sidekiq
或bundle exec sidekiq
后,我收到以下错误消息,我将其复制并复制到此处以确保完整性:
asarluhi@home:~/workspace/fantasytennis_app (background-jobs)*$ sidekiq
2017-01-16T09:04:36.460Z 3850 TID-7pc7o INFO: Booting Sidekiq 4.2.7 with redis options {:url=>nil}
/home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:477:in `load': /home/asarluhi/workspace/fantasytennis_app/app/workers/check_collections_worker.rb:10: syntax error, unexpected keyword_end, expecting end-of-input (SyntaxError)
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:477:in `block in load_file'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:662:in `new_constants_in'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:476:in `load_file'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:375:in `block in require_or_load'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:37:in `block in load_interlock'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies/interlock.rb:12:in `block in loading'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/concurrency/share_lock.rb:117:in `exclusive'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies/interlock.rb:11:in `loading'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:37:in `load_interlock'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:358:in `require_or_load'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:511:in `load_missing_constant'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:203:in `const_missing'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/inflector/methods.rb:268:in `const_get'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/inflector/methods.rb:268:in `block in constantize'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/inflector/methods.rb:266:in `each'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/inflector/methods.rb:266:in `inject'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/inflector/methods.rb:266:in `constantize'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/core_ext/string/inflections.rb:66:in `constantize'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/sidekiq-cron-0.4.5/lib/sidekiq/cron/job.rb:304:in `initialize'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/sidekiq-cron-0.4.5/lib/sidekiq/cron/job.rb:186:in `new'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/sidekiq-cron-0.4.5/lib/sidekiq/cron/job.rb:186:in `block in load_from_array'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/sidekiq-cron-0.4.5/lib/sidekiq/cron/job.rb:185:in `each'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/sidekiq-cron-0.4.5/lib/sidekiq/cron/job.rb:185:in `load_from_array'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/sidekiq-cron-0.4.5/lib/sidekiq/cron/job.rb:156:in `load_from_hash'
from /home/asarluhi/workspace/fantasytennis_app/config/initializers/sidekiq.rb:5:in `block in <top (required)>'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/sidekiq-4.2.7/lib/sidekiq.rb:73:in `configure_server'
from /home/asarluhi/workspace/fantasytennis_app/config/initializers/sidekiq.rb:1:in `<top (required)>'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:in `load'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:in `block in load'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:259:in `load_dependency'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:in `load'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/railties-5.0.0.1/lib/rails/engine.rb:648:in `block in load_config_initializer'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/activesupport-5.0.0.1/lib/active_support/notifications.rb:166:in `instrument'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/railties-5.0.0.1/lib/rails/engine.rb:647:in `load_config_initializer'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/railties-5.0.0.1/lib/rails/engine.rb:612:in `block (2 levels) in <class:Engine>'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/railties-5.0.0.1/lib/rails/engine.rb:611:in `each'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/railties-5.0.0.1/lib/rails/engine.rb:611:in `block in <class:Engine>'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/railties-5.0.0.1/lib/rails/initializable.rb:30:in `instance_exec'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/railties-5.0.0.1/lib/rails/initializable.rb:30:in `run'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/railties-5.0.0.1/lib/rails/initializable.rb:55:in `block in run_initializers'
from /home/asarluhi/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/tsort.rb:228:in `block in tsort_each'
from /home/asarluhi/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
from /home/asarluhi/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/tsort.rb:422:in `block (2 levels) in each_strongly_connected_component_from'
from /home/asarluhi/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/tsort.rb:431:in `each_strongly_connected_component_from'
from /home/asarluhi/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/tsort.rb:421:in `block in each_strongly_connected_component_from'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/railties-5.0.0.1/lib/rails/initializable.rb:44:in `each'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/railties-5.0.0.1/lib/rails/initializable.rb:44:in `tsort_each_child'
from /home/asarluhi/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/tsort.rb:415:in `call'
from /home/asarluhi/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/tsort.rb:415:in `each_strongly_connected_component_from'
from /home/asarluhi/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/tsort.rb:349:in `block in each_strongly_connected_component'
from /home/asarluhi/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/tsort.rb:347:in `each'
from /home/asarluhi/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/tsort.rb:347:in `call'
from /home/asarluhi/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/tsort.rb:347:in `each_strongly_connected_component'
from /home/asarluhi/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/tsort.rb:226:in `tsort_each'
from /home/asarluhi/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/tsort.rb:205:in `tsort_each'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/railties-5.0.0.1/lib/rails/initializable.rb:54:in `run_initializers'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/railties-5.0.0.1/lib/rails/application.rb:352:in `initialize!'
from /home/asarluhi/workspace/fantasytennis_app/config/environment.rb:5:in `<top (required)>'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/sidekiq-4.2.7/lib/sidekiq/cli.rb:244:in `require'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/sidekiq-4.2.7/lib/sidekiq/cli.rb:244:in `boot_system'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/sidekiq-4.2.7/lib/sidekiq/cli.rb:50:in `run'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/gems/sidekiq-4.2.7/bin/sidekiq:12:in `<top (required)>'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/bin/sidekiq:23:in `load'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/bin/sidekiq:23:in `<main>'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/bin/ruby_executable_hooks:15:in `eval'
from /home/asarluhi/.rvm/gems/ruby-2.3.1@fantasytennis_app_Rails5.0/bin/ruby_executable_hooks:15:in `<main>'
app/workers/check_collections_worker.rb
文件,该文件在上述代码的第3行中引发“意外的keyword_end”语法错误,但是没有错误,如您所见:
Class CheckCollectionsWorker
include Sidekiq::Worker
def perform
collections = TennisCollection.all
collections.each do |collection|
collection.update_attribute(:check, false)
end
end
end
config/schedule.yml
中包含的列表的顶部到底部加载其作业。顶部的
CheckCollectionsWorker
类将首先加载。
config/schedule.yml
内的每个作业到顶部,但是对于其中的任何一个,我始终收到相同的“意外的keyword_end”错误消息。
config/schedule.yml
的摘录:
collection_job:
cron: "0 20 * 1-11 1"
class: "CheckCollectionsWorker"
queue: critical
config/initializers/sidekiq.rb
:
Sidekiq.configure_server do |config|
schedule_file = "config/schedule.yml"
if File.exists?(schedule_file)
Sidekiq::Cron::Job.load_from_hash YAML.load_file(schedule_file)
end
end
config/sidekiq.yml
文件的内容如下:
---
development:
:concurrency: 5
production:
:concurrency: 25
:queues:
- [critical, 2]
- default
最佳答案
你的 worker 有错字。 Class CheckCollectionsWorker
应该以小写字母开头:class
关于ruby-on-rails - 语法错误,启动Sidekiq后出现意外的keyword_end,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41674858/
我想使用 rails 控制台重新启动所有失败的作业。有没有办法做到这一点?我可以使用以下方法获取工作列表: require 'sidekiq/api' Sidekiq::Queue.new("mail
我想使用 Datadog 来监控一些后台作业的队列长度。 基本上我需要知道 Sidekiq 中代表队列的键的名称 ,以便我可以按照此处所述对其进行监控: https://docs.datadoghq.
我将 Sidekiq 与 Rails 一起使用,返回的并发值似乎是错误的。 Sidekiq.options[:concurrency] 返回 10 而不是 3,这是我的 config/sidekiq.
从Rails API中,我发现ActiveJob可以retry_job间隔: my_job_instance.enqueue my_job_instance.enqueue wait: 5.minut
我正在一个作业中进行一些处理,最终执行一个外部 shell 命令。该命令正在执行需要数小时才能完成的脚本。 问题是在我使用 spawn 启动脚本后和 detach如果我使用 kill -15 信号关闭
我有一个使用 Capistrano 部署的 Rails 3 应用程序。我最近添加了 Sidekiq。它在我的开发中运行良好。我同时主持 staging和 preview在同一台服务器上,它的预览无法正
我有一个简单的工作线程正在访问其自己的队列的大小: 需要“sidekiq/api” class TestWorker include Sidekiq::Worker def perform(*
我在我的 Rails 应用程序中使用 sidekiq。默认情况下,任何人都可以通过在 url 后附加“/sidekiq”来访问 Sidekiq。我只想用密码保护/验证 sidekiq 部分。我该怎么做
我正在在线阅读一些教程,这些教程告诉我们将 ActiveJob 与 Sidekiq 结合使用。但我不知道我们为什么要这样做。我看到 Sidekiq 具有 ActiveJob 的所有功能。 此外,在 S
我猴子修补了我的用户类(由设计支持)以像这样使用 ActiveJob: class User ActionMailer::DeliveryJob, :args=>["Devise::Mailer",
我有 sidekiq 作业对多种类型的资源进行处理。但是,对于特定类型的资源,例如:资源 X,我需要确保在任何给定时间只有一个 sidekiq 作业可以处理该特定资源。 例如,如果我有 3 个 sid
在过去的一年里,我对我的一项工作的流程进行了大量更改。诸如从相应模型上的 after_commit 而不是 after_create 触发它,以及清理逻辑和覆盖极端情况 我在我的 Heroku Rub
我看到this在 Sidekiq 官方 wiki 中,ActiveJob 会慢得多。 但它是在 2018 年 3 月根据此 issue 基于 Rails 4.2 和 Sidekiq 5.1.1 提到的
我使用 Rails 4 默认测试框架并编写了一些测试,这些测试也希望 Sidekiq 在“后台”做一些工作。但是当我运行 rake test 时,我的测试结果看起来像这样: .............
我们几周前在我们的系统中添加了监控用户事件,如下所示: class ApplicationController < ActionController::Base before_filter :lo
我正在运行 7 个 sidekiq 进程(货币设置为 40)和一个乘客网络服务器,连接到 postgres 数据库。 Rails 池设置设置为 100,postgres max_connectio
我第一次在 Rails 应用程序中使用 Sidekiq。这也是我第一次使用Redis。 我见过几个示例(Here、here、here),其中 initializers/sidekiq.rb 包含以下几
我刚开始使用 sidekiq 和 redis,我试图让 sidekiq 在 Heroku 上运行,但每次我部署 Rails 4 应用程序时它似乎都会崩溃。我在 Papertrail 中收到此错误: M
我有一个要求,我应该能够每秒运行 100 个 sidekiq 作业。 我将服务器容量增加到 8 个 CPU 并创建了 4 个 sidekiq 进程,但它仍然每分钟服务 50 个作业。 我不确定我在哪里
我在 Sidekiq 中有两种队列:“default/low”——满足网络请求和“background_queue”——运行后台进程,比如获取推文。我想在不同的 dyno 上运行“background
我是一名优秀的程序员,十分优秀!