在进程之间共享复杂对象

时间:2015-11-04 18:37:29

标签: perl ipc mojolicious

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

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

Storable对我不起作用,只是给了我奇怪的错误。

任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:0)

你可以通过各种方式实现这一目标。分享websocket本身很难,并且需要对过程分叉/线程,共享文件描述符以及极有可能需要更改的mojolicious基础代码的知识有充分的了解。

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

如果您只是希望能够出于其他目的访问Mojo应用程序的内部,请考虑使用您要发布的数据来证明一个宁静的端点,

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