问题标签 [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.
cucumber - 与 JRuby 并行运行 Cupes
我正在尝试从我的 gem 中并行运行黄瓜场景。从其他答案中,我发现我可以使用以下方法执行黄瓜场景:
当我一次运行一个场景时,上面的代码运行良好,但是当我使用赛璐珞或桃子之类的东西并行运行它们时,我得到了不明确的步骤错误。似乎我的步骤定义正在为每个并行测试加载,黄瓜认为我有多个相同类型的步骤定义。
有什么想法可以并行运行这些东西吗?
ruby - 没有活动线程。僵局?
我有一组工人MessageConsumer
,每个人都有不同的职责:HTTP 调用、CRUD Mongo/Redis、API 调用等。
它们具有相同的结构:
我[worker-name].rb
为每个工人都有一个文件,其中包括:
@queue.receive_message
接收来自 Amazon SQS 的消息并调用传递消息的工作人员。
在每台服务器中,我们都有一组[worker-name].rb
运行:
问题:我"No live threads left. Deadlock?"
在运行进程一段时间后变得频繁(在让线程忙碌之后)。
我ruby 2.0.0p451 (2014-02-24 revision 45167) [x86_64-linux]
在服务器中使用,不确定是否与 MRI 有关,也许我需要切换到 JRuby。但有趣的是,我认为这个问题并不常见,所以我认为这可能是我的实现问题。
有任何想法吗?
ruby - 工作在赛璐珞池中停止
我需要并行检索帐户数据。我为此使用赛璐珞
我的代码
在开始时,它总是对所有成员(鲍勃、爱丽丝等)进行并行请求。但一段时间后,它只向一个用户发出请求(例如,爱丽丝。)
PS在do_request
使用的自制redis队列和Celluloid::Actor.registed
所有账户中都存在
ruby - 为什么在 Celluloid::IO 中调用 sleep 时进程永远阻塞
我Celluloid::IO
用来做 DNS 查询,下面是我的代码:
此代码工作并在几秒钟内完成。但是当我添加该行时sleep 1
(仅用于学习目的),在打印了一些结果后,进程永远阻塞了,这很奇怪。
谢谢你的帮助。
ruby - 赛璐珞池第一次叫死演员
每次我启动应用程序时,我第一次调用它时,它都会返回 Dead Actors。之后,它按预期返回。
然后我从我的控制器调用它BatchProcess.new.fetch(array_of_sites_to_parse)
我确实尝试将它放入@pool = BatchProcess.pool
我的初始化程序中,它没有出错,但是每个请求都会成倍增长。
ruby - 赛璐珞的恶劣比赛条件
我有一个脚本,它生成用户指定数量的 IP 地址并尝试在某个端口上全部连接到它们。我在这个脚本中使用赛璐珞以实现合理的速度,因为同步扫描 2000 台主机可能需要很长时间。但是,假设我告诉脚本扫描 2000 个随机主机。我发现它实际上只扫描了大约一半的数字。如果我告诉它扫描 3000,我会得到相同的基本结果。如果我做 1000 个或更少,它似乎工作得更好,但即使我只扫描 1000 个主机,它通常最终也只能以相对一致性完成大约 920 个。我意识到生成随机 IP 地址显然会失败,但我很难相信每次都有大约 70 个不正确生成的 IP 地址。所以这里是代码:
大约一半的时间我得到这个:
D, [2014-09-30T17:06:12.810856 #30077] DEBUG -- : 终止 11 个演员... W, [2014-09-30T17:06:12.812151 #30077] WARN -- : 终止任务: type=:终结器,meta={:method_name=>: shutdown },status=:receiving Celluloid::TaskFiber 回溯不可用。
Celluloid.task_class = Celluloid::TaskThread
如果您需要回溯,请在此处尝试。
脚本什么也不做。其余时间(仅当我指定超过 1000 个时)我得到这个: http: //pastebin.com/wTmtPmc8
所以,我的问题是这个。如何避免竞争条件和死锁,同时仍然在这个特定脚本中实现我想要的?
ruby - 正确使用套接字和/或赛璐珞::IO
我有一个Pinoccio 微控制器(非常棒,试试吧)。微控制器为其服务器打开一个套接字。我正在一个 Ruby 应用程序中编写 TCP Socket 服务器,我将在其中使用Celluloid::IO。作为我的向导,我在 Node 中遵循这个实现,称为pinoccio-server
我写了一些测试代码,尝试与 Pinoccio 微控制器通信。我可以毫无问题地读取它,但是当我将数据写回套接字时,我永远不会得到我期望的行为。这是代码,有人可以告诉我我是否在滥用 Celluloid::IO 或套接字?
ruby - 在 SupervisionGroup 中更改池大小
我可以在赛璐珞监督组中更改池大小吗?
例如我有一个工人:
然后我在一个监督组中提供 3 名工人:
我可以以某种方式修改池大小supervisor
吗?
谢谢。
ruby - 红宝石赛璐珞:附加到已经在进行中的未来
给定一个赛璐珞 Actor 的实例,您可以使用future
异步执行 Actor 方法,并在稍后的某个时间点使用 Future 的value
方法来获取 Actor 方法的结果(必要时阻塞)。
假设我在一个系统中有两个独立的组件,它们都想使用相同的 Actor 方法,可能是非常昂贵的数据库查询。如果这两个组件都单独调用actor.future.expensive_query
,则查询将被执行两次,每个调用者将获取自己单独的 Future 对象以检索结果。此外,这两个查询将连续执行,而不是同时执行。相反,如果我想进行第二次调用以actor.future.expensive_query
获取对第一个调用者创建的 Future 对象的引用怎么办?赛璐珞可以做到这一点吗?
ruby - 赛璐珞::TimeoutError:超过 5 秒的链接超时
我正在使用 Jruby 1.7.12 和赛璐珞(0.16.0)。我的应用程序正在使用池并循环生成参与者
在我的库中,每个用户都是与经理相关联的演员,经理也是演员。我已经尝试完全消除链接,但问题仍然存在。当我创建超过 30 个用户 Actor 的那一刻,我的系统就会挂起。
似乎讨论了一些类似的超时错误,并提到了 JRuby 问题,但没有具体涉及链接超时问题。我无法弄清楚是什么导致了这个问题。
提前致谢。
整个代码库可在https://github.com/supersid/kaiwa获得
将不胜感激我能得到的任何帮助。