Process heroku上两个进程之间的通信(使用哪个端口)

Process heroku上两个进程之间的通信(使用哪个端口),process,heroku,port,eventmachine,Process,Heroku,Port,Eventmachine,我有这样一个文件: web: bundle exec rails server -p $PORT em: script/eventmachine em进程通过start\u server(portENV['port'])启动一个eventmachine,我的web进程偶尔需要与之通信 我的问题是web进程如何知道在哪个端口上与它通信?如果我正确理解heroku,它会在进程启动时为您分配一个随机端口(如果ps被终止或重新启动,它可能会改变)。谢谢 进程是孤立的,不能直接相互通信

我有这样一个文件:

web:     bundle exec rails server -p $PORT
em:      script/eventmachine
em
进程通过
start\u server
(port
ENV['port']
)启动一个eventmachine,我的web进程偶尔需要与之通信


我的问题是web进程如何知道在哪个端口上与它通信?如果我正确理解heroku,它会在进程启动时为您分配一个随机端口(如果ps被终止或重新启动,它可能会改变)。谢谢

进程是孤立的,不能直接相互通信

然而,还有其他一些方法。一种是使用Redis或Postgres等支持服务作为中介,另一种是使用FIFO进行通信


您的流程是隔离的,没有共享,这是一件好事,但您确实需要稍微改变应用程序的架构以适应这一点。

我在上班途中阅读这篇文章。所以我没有尝试过任何东西(抱歉),但这看起来很相关,而且可能很棒


根据Heroku文件

在同一dyno上运行的两个进程可以使用它们想要的任何端口通过TCP/IP进行通信


在不同dynos上运行的两个进程根本无法通过TCP/IP进行通信。他们需要使用memcached、数据库或Heroku插件进行通信。

是的,我可以在redis或其他软件中使用fifo队列,但你确定这是因为进程无法相互通信吗?Eventmachine服务器/客户端可以通过标准tcpip相互通信,就像web进程接受传入的tcpip请求一样。我只是不知道连接哪个端口。谢谢你的回答——亚当·威金斯的12因素页面真的很有趣。是的。您的web进程被分配了一个端口来接收来自外部世界的请求-没有其他进程间通信。请看下面这个类似的问题:好的,很酷,谢谢,这很有帮助。最后,我使用了一个适用于Redis的pub/sub模型。虽然它不耐用,所以我可能会在这之后尝试iron_mq,并从eventmachine进行轮询。谢谢你的帮助!我真的很感激。这个文档的当前版本是