问题标签 [workling]

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.

0 投票
1 回答
297 浏览

ruby-on-rails - 如何同步多个 Workling 工作人员?

我有以下情况:

  • 三项任务:A、B、C(作为 Workling 工人实施)
  • 两个用户事件(控制器方法的调用)

任务以这种方式触发:

  1. 第一个用户事件触发任务 A 和任务 B。
  2. 然后可选的用户事件可以触发任务 C,但该任务必须在任务 A 和 B 完成之前运行。

我怎样才能强制执行这一系列事件?

一种方法是在任务 C 开始时执行任务 A 和 B,但触发任务 C 的用户事件可能永远不会发生,但仍然必须执行任务 A 和 B。

在“正常”程序中,我可以使用整个同步对象库(互斥锁、信号量、临界区……)。但我能在这里做什么?

(如果重要的话,Rails 应用程序将在 Linux 服务器上运行,并且 Workling 设置为使用 Starling)

0 投票
1 回答
148 浏览

ruby-on-rails - 工作不在后台运行任务

我遵循了描述如何让运行后台任务的railscast,但无法使其正常工作。任务运行,但不在后台运行(在我被重定向到 admin_path 之前需要 5 秒)。

这是我的代码的样子:

class AdminWorker < Workling::Base
  def test_workling(options)
    sleep 5
  end
end

class AdminController < ApplicationController
  def test_workling
    AdminWorker.asynch_test_workling
    flash[:notice] = "在后台做事"
    redirect_to admin_path
  end
end

我究竟做错了什么?如何调试?

谢谢!

0 投票
1 回答
452 浏览

ruby-on-rails - Rails 后台作业处理

我在我的 rails 应用程序中使用 starling 作为队列服务器。所以每次我想调用工作方法时,我都必须从控制台开始八哥和工作客户端。

有没有一种方法,一旦乘客启动,我的工作和八哥都会自动启动,或者当我调用 worker 方法时,只有我的工作实例会被创建。

0 投票
3 回答
610 浏览

ruby - 需要一个 ruby​​ 解决方案来在单独的进程中执行方法

我正在实现一个轮询服务,其界面如下所示。

start方法应该不断地开始点击 http 请求并更新数据库中的内容。一旦started,该过程应该继续,直到它被明确地stoped。

我了解实现start需要在新进程中生成和运行。我不太确定如何在 Ruby 中实现这一点。我想要一个 ruby​​ 解决方案,而不是一个特定于 ruby​​ 框架的解决方案(不是 rails 插件或 sinatra 扩展。只是 ruby​​ gems)。我正在探索 eventmachine 和 starling-workling。我发现 eventmachine 太大而无法在短时间内理解,并且工作是一个插件而不是一个 gem。所以让它为 Ruby 应用程序工作是一件痛苦的事情。

我需要有关如何实现这一目标的指导。任何指针?代码示例会有所帮助。

编辑

Eventmachine 或 starling-workling 解决方案将优于线程/分叉。

0 投票
1 回答
289 浏览

ruby-on-rails - 工作和 RabbitMQ

嗨,对于我的项目,我想使用 workling 在后台运行一些作业(将一些数据发布到队列),但是在尝试配置我的应用程序时遇到错误(未初始化的常量 MemCache)我使用的是 Fedora 13 + ruby​​ 企业版我的问题是

最近有人工作过吗?一切都好吗?

您是否尝试运行“script/workling_client start”?你有没有得到任何错误?

有人可以建议一些替代工作的方法吗?

谢谢 :)

0 投票
1 回答
139 浏览

ruby-on-rails - 工作客户端在启动后几秒钟内停止

嗨,我正在尝试使用 RabbitMQ 而不是 Starling 我已经配置了我的应用程序,一切似乎都很好,但是当我运行 'script/workling_client start' 时,它开始工作并在几秒钟后结束,我不明白为什么

我的应用程序与 Starling 完美配合

我正在使用 Fedora 13 ruby​​ 1.8.7 rails 2.3.8 mongrel(根据http://github.com/tmm1/amqp配置)

日志文件为空,但代码 isidelisten操作肯定会执行

0 投票
1 回答
158 浏览

ruby-on-rails - 当我的 Rails 应用程序中的数据库关闭时,工作不起作用

我想安排我的工作人员使用 cron 作业定期检查数据库连接(比如 5 分钟)并相应地更新 memcache 键。所以在我的应用程序中,如果我找到要设置的 memcache 变量。当数据库启动时,我会以不同的方式呈现我的页面。

但问题是,当数据库关闭时,worker 不会启动。当数据库启动时。它正确地发现存在数据库连接并更新 memcache 变量并且一切正常。

我不知道,为什么当数据库关闭时工作人员不启动。我快到最后期限了。非常感谢任何帮助!

更新:

这是我在工作没有开始时得到的错误

/apps/Symantec/shasta/website/install/local/ruby-1.8.7-p299/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/connection_adapters/mysql_adapter.rb:527:inreal_connect': Can't connect to MySQL server on '10.223.2.50' (111) (Mysql::Error) from /apps/Symantec/shasta/website/vendor/plugins/workling/script/../lib/workling/starling/poller.rb:35:in从 /apps/Symantec/shasta/website/vendor/plugins/workling/script/../lib/workling/starling/poller.rb:35:in listen' from /apps/Symantec/shasta/website/vendor/plugins/workling/script/../lib/workling/starling/poller.rb:35:ineach' 从 /apps/Symantec/shasta/website/vendor/加入plugins/workling/script/../lib/workling/starling/poller.rb:35:in listen' from /apps/Symantec/shasta/website/vendor/plugins/workling/script/listen.rb:19 from /apps/Symantec/shasta/website/install/local/ruby-1.8.7-p299/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/application.rb:203:inload' 来自 /apps/Symantec/shasta/website/install/local/ruby-1.8.7-p299/lib/ruby/ gems/1.8/gems/daemons-1.1.0/lib/daemons/application.rb:203:in start_load' from /apps/Symantec/shasta/website/install/local/ruby-1.8.7-p299/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/application.rb:296:instart' from /apps/Symantec/shasta/website/install/local/ruby-1.8.7-p299/lib/ruby /gems/1.8/gems/daemons-1.1.0/lib/daemons/monitor.rb:51:inwatch' from /apps/Symantec/shasta/website/install/local/ruby-1.8.7-p299/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/monitor.rb:51:in来自 /apps/Symantec/shasta/website/install/local/ruby-1.8.7-p299/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/monitor.rb:51 的 fork :在watch' from /apps/Symantec/shasta/website/install/local/ruby-1.8.7-p299/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/monitor.rb:45:in每个'来自 /apps/Symantec/shasta/website/install/local/ruby-1.8.7-p299/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/monitor.rb:45watch' from /apps/Symantec/shasta/website/install/local/ruby-1.8.7-p299/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/monitor.rb:44:in来自/apps/Symantec/shasta/website/install/local/ruby-1.8.7-p299/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/monitor.rb的:循环中:44:在watch' from /apps/Symantec/shasta/website/install/local/ruby-1.8.7-p299/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/monitor.rb:84:instart_with_pidfile' 中来自 /apps/Symantec/shasta/website/install/local/ruby-1.8.7-p299/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/monitor.rb :64:in fork' from /apps/Symantec/shasta/website/install/local/ruby-1.8.7-p299/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/monitor.rb:64:instart_with_pidfile' 来自 /apps/Symantec/shasta/website/install/local/ruby-1.8.7-p299/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/monitor。 RB:111:在start' from /apps/Symantec/shasta/website/install/local/ruby-1.8.7-p299/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/application_group.rb:149:in来自/apps/Symantec/shasta/website/install/local/ruby-1.8.7-p299/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/application.rb:283的create_monitor:从start' from /apps/Symantec/shasta/website/install/local/ruby-1.8.7-p299/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/controller.rb:70:in/apps/Symantec/shasta/website/install/local/ruby-1.8.7-p299/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons.rb:143:in 运行run' from /apps/Symantec/shasta/website/install/local/ruby-1.8.7-p299/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/cmdline.rb:112:in来自 /apps/Symantec/shasta/website/install/local/ruby-1.8.7-p299/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/cmdline.rb:112 的调用:在catch_exceptions' from /apps/Symantec/shasta/website/install/local/ruby-1.8.7-p299/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons.rb:142:in运行中'来自脚本/workling_starling_client:17

0 投票
2 回答
278 浏览

ruby-on-rails - 在 Rails 中使用 workling 处理 45k 的数据库记录而不影响服务器性能

在我的 rails 应用程序中,我使用工作进程每 6 小时扫描一次 45k 数据库记录,并在满足特定条件时发送邮件。这会导致服务器 CPU/负载在工作人员处理时达到峰值。因此,其他服务器请求会受到性能影响。我尝试使用 find_in_batch 一次检索 1000 条记录并进行处理。但 CPU 利用率仍处于峰值水平。我看不出有什么大的区别。有没有办法处理这个问题,所以 CPU 利用率没有达到最大限制?

0 投票
3 回答
4910 浏览

ruby-on-rails - 与rails 3一起使用的工作队列替代方案?

Workling似乎与 rails 3不兼容。在 rails 3 应用程序中处理工作队列有哪些替代方法?

0 投票
0 回答
655 浏览

ruby-on-rails - Rails 上的 Starling/Workling 问题

我正在尝试开始和工作rails 3,但遇到了一些问题。我已经starling-starling安装在 gemfile 中,并通过以下方式安装工作:

然后我写信给我的工人:

并将以下调用放在我的控制器中:

我启动了我的八哥守护进程:

然后是我的工作监视器:

我没有收到任何命令的错误。然而,当控制器调用工人时,什么也没有发生。在日志中创建了一个文件,称为bot_workers_bot_test存储 uid 的位置,但它们似乎从未传递给 BotWorker 类。

有人对我可能做错了什么有任何建议吗?提前感谢您的任何答案!