问题标签 [celluloid]

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 回答
379 浏览

ruby - 赛璐珞期货不比同步计算快吗?

我正在尝试使用赛璐珞异步处理一些 .csv 数据。我已经读过,使用期货可以让您在主线程终止之前等待一组参与者完成。我看过一些例子来证明这一点。

但是,当我在示例代码中实现它时,事实证明使用期货并不比同步处理快。谁能看到我做错了什么?

2.100000 0.030000 2.130000 ( 2.123381)

2.060000 0.020000 2.080000 ( 2.069357)

【4.6s完成】

0 投票
0 回答
115 浏览

ruby-on-rails - Dalli 没有按预期工作的问题?

我有一个简单的 rails 应用程序,我正在尝试从 memcache 框中保存和检索密钥,除非我们开始遇到下面的错误,否则它工作了很长时间,我已经尝试调试它,但现在需要有人帮助

如果有人对此有见解,请告诉我?

0 投票
1 回答
362 浏览

ruby - 赛璐珞监督组不起作用

为了理解赛璐珞,我编写了以下脚本。

一切正常,我想避免调用池上的终止。

所以我尝试使用主管,但它提高了我uninitialized constant Celluloid::SupervisionGroup

搜索后我发现这个(在弃用的文件夹中):(https://github.com/celluloid/celluloid-supervision/blob/master/spec/celluloid/deprecate/supervision/supervision_group_spec.rb

我想让工作像这样:

如何使用新系统让工作成为未来、主管和池?

0 投票
0 回答
366 浏览

ruby-on-rails - 如何使用赛璐珞和 ActiveRecord

我正在使用赛璐珞在后台执行一些工作,一些工作正在使用数据库,为此我在单元格(演员)中使用以下代码:

在某些情况下,我有一些服务正在排队数据库,但其中包含一些其他逻辑。我可以将它们发送到...with_connection或者我需要将电话包裹在里面吗?有没有更好的方法来做这一切?

0 投票
1 回答
101 浏览

ruby - 赛璐珞的非阻塞子进程

在不阻塞actor的情况下生成子进程的最佳方法是什么?

我的目标是运行多个命令,完成后,获取输出和退出代码。我试过这个,但显然, popen 调用被阻塞:

输出是:

但我希望每个“启动子进程”之间有五个“勾号”......

谢谢 !

0 投票
1 回答
71 浏览

ruby - 赛璐珞代码测试方法

我花了一些时间在谷歌上搜索主题,但是我失败了。有人可以分享以下任何内容吗?

  • 任何异步事物的示例* 带有编写的测试代码Celluloid
  • 关于在 Ruby 中测试异步内容的文章甚至是小文章

* 对不起,我知道any async thing听起来很奇怪,但我不知道怎么称呼它:-)

0 投票
2 回答
467 浏览

ruby - 了解赛璐珞并发

以下是我的赛璐珞代码。

  1. client1.rb2 位客户之一。(我将其命名为客户端 1)

  2. client2.rb2 个客户中的第 2 个。(命名为客户端 2)

笔记:

上述 2 个客户端之间的唯一区别是传递给服务器的文本。即('client-1''client-2'分别)

在针对以下 2 个服务器(一次一个)测试这 2 个客户端(通过并排运行它们)时。我发现很奇怪的结果

  1. server1.rb取自赛璐珞-zmq 的README.md 的基本示例

    将其用作上述 2 个客户端的示例服务器会导致任务的并行执行

输出

笔记:

当client1.rb请求处于睡眠状态时,client2.rb消息被处理。(并行标记

  1. server2.rb

    将其用作上述 2 个客户端的示例服务器并没有导致任务的并行执行

输出

笔记:

客户端2 被要求等待 60 秒,因为客户端 1正在睡眠(60 秒睡眠)

我多次运行上述测试都导致相同的行为。

谁能从上述测试的结果中解释一下。

问题:为什么赛璐珞要等待 60 秒才能处理其他请求,即在 server2.rb 案例中注意到的那样。?

红宝石版本

ruby -v

ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]

0 投票
1 回答
52 浏览

ruby - 推迟赛璐珞 ZMQ 导致数据问题

示例代码来解释我的问题。

发件人

发送方,将请求以格式发送到服务器(通过 ZMQ)

服务器

服务器在接收到来自发送方的数据后,以相同的格式将其转发回接收方。

接收者

接收者在收到来自服务器的请求后,只打印消息。

描述:

如果我不使用这一mutex中定义的(在服务器内部)。我看到接收端出现了一些不符合上述格式/标准的数据。

服务器将打印的示例(在此

但是在接收端,我看到的消息看起来像这样。

问题:

对我来说,这似乎是一个可能的线程问题(我可能错了)。其中传递给(服务器内部)赛璐珞(发送)的数据正在被其他线程更改。

我的印象是赛璐珞可以处理几乎所有的线程问题。

我对这一切的理解是否正确?

0 投票
1 回答
411 浏览

ruby - 了解赛璐珞池

我想我对赛璐珞池的理解有点被打破了。我将尝试在下面解释,但在此之前快速说明。

注意:我们的系统是针对fast client通过 ZeroMQ 传递的消息运行的。

使用以下香草赛璐珞应用程序

我们的系统在一段时间后导致失败,原因 'Can't spawn more thread'(或类似的东西)

所以我们打算使用赛璐珞池(避免上述问题),这样我们就可以限制产生的线程数

我对赛璐珞池的理解是赛璐珞池为你维护了一个演员池,这样你就可以并行分配你的任务。

因此,我决定对其进行测试,但根据我的测试用例,它似乎是串行的(即事情永远不会分发或并行发生。)

复制此示例。

sender-1.rb

sender-2.rb

the_client.rb

receiver.rb

如果,sender-2.rbsender-1.rb使用由20_ _the_client.rbsender-1.rb

它在 ruby​​-2.2.2 和 jRuby-9.0.5.0 下的行为相同。池以这种方式行事的可能原因是什么?

0 投票
1 回答
66 浏览

ruby - 访问通过赛璐珞中的池初始化的演员的邮箱

我的应用中有 2 个演员。服务和 PushSocket。我正在使用邮箱在两个演员 Service 和 PushSocket 之间进行通信。当我在 PushSocket 上创建单个实例并将消息添加到它的邮箱时,它运行良好。

但是当尝试与池相同时,它不会按预期工作。我在推送套接字中没有收到任何消息。

为了让这个工作,我使用了推送套接字的实例方法,它给出了正确的结果。当我尝试使用定义了池大小的邮箱时,不确定有什么问题。