【发布时间】:2012-11-21 17:31:10
【问题描述】:
我正在尝试构建一个同时具有 Python 部分和 Node.js 部分的网络应用程序。 Python 部分是一个 RESTful API 服务器,Node.js 将使用 sockets.io 并充当推送服务器。两者都需要访问同一个数据库实例(在我的例子中是 Heroku Postgres)。 Python 部分需要与 Node.js 部分通信,以便发送推送消息以传递给客户端。
我已经构建和部署了 Python 和 DB 部分,在“网络”测功机下运行。我不确定如何构建 Node 部分——尤其是 Python 部分如何与 Node.js 部分对话。
我假设 Node.js 需要成为一个新的 Heroku 应用程序,以便它也可以在“网络”测功机上运行,这样它就可以从 HTTP 路由堆栈中受益,并且客户端可以连接到它。在这种情况下,我的 Python dynos 会像普通客户端一样访问它吗?
有哪些选择?这通常是怎么做的?
【问题讨论】:
-
这是另一种方法,所以我只是将其作为评论发布。我刚刚看完 PyCon 2012 上的精彩 IPython video。在其中,Fernando 提到他们正在使用 tornado 和 0MQ 来创建一个非常松散耦合的客户端/代理/服务器环境。 Tornado 是一个用 Python 编写的异步服务器平台(如 node.js)。我刚刚进入0MQ docs,这很有趣。您可能希望将 tornado 视为 node.js 的 Python 替代品。
-
我实际上已经听说过它,这是有道理的,但我对此有一些普遍的问题:(1)它没有回答我关于 Heroku dynos 如何相互交谈的问题,并且我是否需要一个新的 Heroku 应用程序 (2) Heroku dynos 可以使用 0MQ 与 e/o 通话吗? (3) 它将我的推送服务器逻辑和我的 API 逻辑,这是相当不同的项目,耦合到一个项目中,以便我可以将它们放在一个测功机上; (4) 因此,它让我编写了我的 API 异步风格,而编写它同步可以更简单和易于管理,特别是如果我使用 gevents/gunicorn。
-
全部正确。正如我所说,这就是我发表评论的原因。
-
是的,我在一条类似的船上 Nitzan - 有一个 REST API (python tornado) 和一个节点 web 客户端。目前正在尝试在 Heroku 上发布 REST API,以便我可以通过 url 访问该服务。在本地它会在端口 8080 上侦听,但我认为它与 Heroku 的映射不太好:-(
-
你想监听端口
$PORT(环境变量),当你从你的node.js应用程序访问它时,你会使用常规端口80,heroku http路由器将映射到右边您的实例的端口。这是一个与我所面临的完全不同的问题,但我希望这仍然会有所帮助。
标签: python node.js heroku cedar