【发布时间】:2014-07-16 21:30:09
【问题描述】:
我正在开发一个用 Golang 编写的 Web 应用程序,它需要调用 Python 程序/模块来完成一些繁重的工作。由于这非常占用内存/CPU,因此它可能位于单独的机器上。由于 Golang 和 Python 不能直接对话,所以有 3 种方法可以实现:
- 只需将 python 程序作为 OS 进程从 Go(如果在同一台机器上)(或 RPC?)执行
- 将 Python 进程包装在一个服务中并公开它以供从 Go 调用(可能是一个简单的 CRUD 类服务 - 一个 Bottle/flask RESTful 服务)
- 有一个简单的 pub-sub 系统来实现这一点(Redis 或一些 MQ 系统) - 添加基于 Redis 的缓存是在雷达上,所以可能是这样做的一个很好的理由。不确定。
主要的是,需要很长时间才能完成的 Python 进程必须“通知”Web 应用程序它已经完成。数据可以在文件/数据库中,也可以由进程“返回”。
在类似 pub/sub 的环境中实现这一目标的最简单方法是什么?
更新 REST 似乎是一种方式,但会产生实现服务器端推送的成本,这对于现有的微型 Web 框架可能会或可能不会轻松实现。尽管如此,发布/订阅会为可维护性和学习曲线增加一层额外的复杂性。我不确定是否可以跨机器实现类似 RPC 的调用。在这方面有什么好的选择?
【问题讨论】:
标签: python python-2.7 go publish-subscribe