perl - 在进程之间共享一个复杂的对象

标签 perl ipc mojolicious

我想在进程之间共享一个 Mojo::Transaction::WebSocket 对象。

这样做的原因是我正在构建一个 websocket 聊天,我不想将 Mojolicious 限制为仅与一名 worker 一起运行。

Storable 对我不起作用,它只会给我带来奇怪的错误。

如有任何想法,我们将不胜感激。

最佳答案

您可以通过多种方式实现这一目标。共享 websocket 本身会很困难,需要对进程 fork /线程、共享文件描述符和 mojolicious 基础代码有深入的了解,这些很可能需要更改。

如果你的目标是负载平衡,或执行一些长时间运行的任务,你最好让你的 mojo 应用程序接受请求,并将其添加到队列系统,如 redis。您可以让多个进程监听特定请求、读取负载并通过队列发回响应。

如果您只是想出于其他目的访问 Mojo 应用程序的内部结构,请考虑使用您希望发布的数据证明一个 Restful 端点,

或者,您可以查看远程过程调用 (RPC),它允许您的 Mojo 进程调用函数,并将数据发送到其他进程。看RPC::Simple举个例子。

关于perl - 在进程之间共享一个复杂的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33529507/

相关文章:

javascript - websocket onmessage 在 ajax 请求期间未触发

bash - IO::Uncompress::Gunzip 在 "original"gzipped 文件内的第一个 "concatenated"gzipped 文件后停止

perl - 需要拆分 Unicode 字符串

linux - 如何确保仅当脚本在 Windows 上运行时才加载模块?

c++ - Boost::网络信号封装

javascript - Node `net` 模块 IPC 服务器间歇性

perl - 用 mojolicious 构建数据列表的最佳方法

python - 如何在 Perl 或 Python 中仅打印每三个索引?

c# - 在没有 Java EE 应用程序服务器的情况下使用 Web 服务在 C# 和 Java 之间进行互操作?

mojolicious - 如何解决催眠工作人员的故障