问题标签 [resque]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 部署为 WAR 时 JRuby 中的线程安全 Resque Workers
目前我们在 JRuby 中使用 Resque,我们在开发时使用了两种启动 Worker 的方式。
- 使用耙:
- 以编程方式,通过 Sinatra Rack App(或其他)初始化,最终调用一个类:
尽管这两种解决方案在我们的开发中都是可以接受的。例如,我担心这在部署到 Tomcat 时会如何工作。
通常,在 Ruby 中,您会生成或妖魔化工作人员,然后使用监视工具来监视 pid。
在部署时以编程方式启动 Worker 是否有意义?我想知道它是否会在 java 中启动一个新线程或使 jruby 进程混乱,如果我不应该使用另一个调度库(如quartz)来启动一个worker?还是在部署任务时启动的 rake 任务?
我可以创建一个 Worker 模型,然后让它跟踪数据库中的工人,但这对我来说没有意义。
任何帮助或知识将不胜感激。
谢谢你。
参考:
https://github.com/defunkt/resque
http://rubydoc.info/github/defunkt/resque/master/Resque/
http://blog.thomasmango.com/post/636319317/resque-in-production
ruby-on-rails-3 - 如何破坏由resque工人排队的工作?
我在 rails-3 项目上使用 Resque 来处理计划每 5 分钟运行一次的作业。我最近做了一些事情,使这些工作的创建滚雪球,堆栈已经达到了 1000 多个工作。我修复了导致许多作业排队的问题,现在我遇到的问题是错误创建的作业仍然存在,因此由于作业被添加到具有 1000 多个作业的队列中,因此很难测试某些内容。我似乎无法停止这些工作。我尝试使用 flushall 命令从 redis-cli 中删除队列,但没有成功。我错过了什么吗?因为我似乎找不到摆脱这些工作的方法。
ruby-on-rails - 上帝不会启动 Resque 工人:rake 中止了!非绝对的家
我在 log/resque-0.log 中收到以下错误:
如果我使用上帝使用的相同命令手动启动一个工人,它启动得很好:
我尝试在“rails”用户和“root”用户(God 在其下运行)下运行该命令。有任何想法吗?
ruby - 是否可以将参数传递给(resque-status)Resque::JobWithStatus?
我对resque很陌生,但它看起来非常适合我的需求。
实际上,我正在尝试设置一个简单的测试应用程序,例如:
并通过以下方式创建后台工作人员
没有 resque-status,它可以完美地工作(调用 enqueue 而不是创建 worker)。有了resque-status,我得到了一个
参数数量错误(2 为 1)/.../resque_test/lib/word_analyzer.rb:6:in `perform' /.../.rvm/gems/ruby-1.9.2-p136/gems/resque- 1.16.1/lib/resque/job.rb:127:在“执行”中
我搜索了文档和代码,但没有找到将参数传递给 resque-status 工作的正确方法。是否可以?
提前致谢。
ruby-on-rails - resque-web 无法启动并出现 500 服务器错误
我正在遵循安装resque的配置指南。我遇到了一个(OpenURI::HTTPError)。我正在使用 RVM 1.9.2-p180、rails 3.0.6 和POW .'resque-web' 无法以 500 服务器错误启动。这到底是怎么回事?
复制问题:
- 用 $ 启动 redis
redis-server
- 开始一个工人
$ VVERBOSE=1 QUEUE=file_serve rake environment resque:work
- 尝试使用以下命令启动 Resque-Web:
RAILS_ENV=development resque-web config/initializers/resque.rb
配置/resque.yml
初始化程序/resque.rb:
终端:
Redis-server(当我点击 localhost:6379 时,我正在连接一个额外的客户端。
初始化程序/redis.rb
终端:($redis 的证明)
ruby-on-rails - Resque.enqueue 在第二次运行时失败
我正在尝试将应用程序从 Rails 3.0.3 移植到 Rails 3.1rc ......我认为我没有错过任何东西,就配置而言。该过程在 Rails 3.0.X 中完美运行,而不是在 3.1rc 中。
在控制台中,我这样做:
到目前为止一切正常。Resque-web 报告没有失败的作业。而且,我从模块 EncodeSong 中得到了两个“放置”。
但是,再次运行Resque.enqueue(EncodeSong, Song.find(20).id, Song.find(20).unencoded_url)将在 resque-web 中返回以下错误(如下)。为了使错误消失,我必须关闭正在运行的进程:QUEUE=* rake environment resque:work并在控制台窗口中重新运行它。但是在第一次尝试 Resque.enqueue() 之后问题又回来了。
这是我的其余相关代码:
/config/initializers/resque.rb
/app/jobs/encode_song.rb
lib/tasks/resque.rake
不太确定,但可能与这个问题有些相关。我的猜测是,主 resque 进程建立与 db 的连接,同时加载 rails 应用程序类、模型等,并且该连接在 fork()ed 进程中损坏(退出时?)。
任何帮助/方向将不胜感激。
编辑:
如果我从lib/tasks/resque.rake中删除以下块:
在控制台中,运行Resque.enqueue(EncodeSong, Song.find(20).id, Song.find(20).unencoded_url)
我收到一个新错误(在运行 QUEUE=* rake environment resque:work 的控制台中):
看来,这可能是适配器的错误?这里可能是错的。你的意见?
ruby-on-rails - 验证邮件是否应该在后台处理?
是否应该使用某种后台作业(Resque、Delayed_Job 等)在后台处理/发送验证电子邮件?
在发送验证电子邮件之前,该应用程序确实有挂起的趋势。但是,它只挂起一两秒。不知道它是否值得作为后台任务发送。
你觉得呢?你有没有什么想法?
ruby - Rails 队列管理
我正在构建一项将从远程网站获取并重新验证信息的工作。实际上,我已经用一个类似这样的队列实现了它:读取文本文件,然后将其切成 5k 增量并移交给线程处理器,然后退出并生成一个新的工作线程。
我正在研究 resque,但有一个关于此类问题的通用设计问题。因此,如果我的工作可能包含 5-20M 个工作单元,那么存储队列的最佳实践是什么?例如,理论上我可以将工作分块并存储,然后为该块创建一个作业,或者我可以在队列中有 5-20M 个单独的行项目。在获取/重新生成的工作中似乎有很多开销。但是也有相当大的开销和更多的编码来尝试分块工作。