我正在开发一个用Golang编写的web应用程序,它需要调用Python程序/模块来完成一些繁重的工作。因为这是非常占用内存/CPU的,所以它可能在一台单独的机器上。由于Golang和Python不能直接对话,有三种方法可以实现:

  1. 只需将python程序作为OS进程从Go(如果在同一台机器上)执行(或者RPC?)在
  2. 将Python进程包装在一个服务中,并公开它,以便从Go调用它(可能是一个简单的类似CRUD的服务-一个瓶子/烧瓶restful服务)
  3. 有一个简单的发布订阅系统来实现这一点(Redis或一些MQ系统)-添加基于Redis的缓存是迫在眉睫的,所以也许这是一个很好的理由。不确定。在

主要的是python进程需要很长时间才能完成,它必须“通知”web应用程序它已经完成。数据可以在文件/DB中,也可以由进程“返回”。在

在类似酒吧/酒吧的环境中,最简单的方法是什么?在

更新 REST似乎是一种方法,但它会产生实现服务器端推送的成本,而这在现有的micro web框架中可能不容易实现。然而,发布/订阅将为可维护性和学习曲线增加额外的复杂性。如果我不能像机器一样实现远程过程调用。在这方面,什么是一个好的选择?在