gpt4 book ai didi

ruby-on-rails - 如何将 ActiveRecord 与 EventMachine 异步使用?

转载 作者:行者123 更新时间:2023-11-29 13:34:18 27 4
gpt4 key购买 nike

我使用 ruby​​ on rails 制作了一个网站。现在,我需要用 flash/action 脚本编写一个聊天/游戏,我决定游戏服务器将使用 ruby​​(主要是因为我已经有了我的 AR 模型,这是我知道的一种语言,而且因为聊天/游戏主要是 IO 绑定(bind),计算量不大)。起初我以为我会使用多线程应用程序(使用 jruby 运行),每个客户端一个线程。然后我意识到这不是个好主意。然后我考虑使用 select/kqueue/epoll。我研究了是否有诸如 twisted(用于 python)但用于 ruby​​ 的库,结果发现有 EventMachine(或多或少做同样的事情)。我很难理解事件/回调的做事方式,但我想我会没事的。但有一件事:我意识到使用 ActiveRecord 意味着我的数据库查询会被阻塞,这是一件坏事。我在网上查了“异步ActiveRecord”,发现了一些有趣的东西(asynchrony、neverblock、em_postgresql 等),但我仍然不知道如何应用它们。如果我理解正确,异步基本上是带有纤程的 EM,这将允许我编写看起来像普通代码的事件代码(有人可以向我解释一下吗?)。我相信 Em_postgresql 是(我认为)使用纤程与异步一起工作的 postgresql 驱动程序。对吗?

我很迷茫,我希望有人给我一个基本 EM 服务器的示例,该服务器对 postgresql 数据库进行非阻塞 ActiveRecord 调用(主要是因为这是我将要使用的)。

此外,还有一件事我不明白。 EventMachine 主要是单线程的,但是使用线程进行延迟。默认的 ruby​​ 解释器只有绿色线程。 EventMachine 如何使用系统线程?是因为主要是C++吗?

感谢您的帮助。

最佳答案

ActiveRecord 应该能够在多线程环境中工作。它依赖于数据库驱动程序来支持并行执行(mysql2 驱动程序即)。

关于ruby-on-rails - 如何将 ActiveRecord 与 EventMachine 异步使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16876660/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com