使用回调在 python 2 个应用程序之间进行通信的最佳方式是什么?

What is the best way to communicate between python 2 applications using callbacks?

我在同一台 linux (ubuntu) 台计算机上有 2 个独立的 python 2 个应用程序 运行。

我想将消息从一个发送到另一个(双向)并在回调函数中接收这些消息。

可能吗?有没有例子可以参考?

谢谢

python 应用程序之间的通信有不同的选项。

一个简单的方法是使用基于 HTTP 的 API。每个应用程序都会公开一个特定的端口,并且通过交换 HTTP 请求进行通信。 有几个框架可以让您通过几个步骤构建它。例如,使用 Bottle:

在应用程序 1 中:

from bottle import route, run, request

@route('/action_1', method='POST')
def action_1_handler():
    data = request.json
    print(str(data))
    # Do something with data
    return {'success': True, 'data': {'some_data': 1}}

run(host='localhost', port=8080)

在应用程序 2 中:

import requests
r = requests.post("http://localhost:8080/action_1", json={'v1': 123, 'v2': 'foo'})
print r.status_code
# 200
data = r.json()
# {u'data': {u'some_data': 1}, u'success': True}

请注意,如果在收到 HTTP 请求后在 app1 上执行的操作需要很长时间,这可能会导致超时错误。在这种情况下,请考虑 运行 在另一个线程中执行操作或使用替代通信协议(例如套接字、ZeroMQ 消息传递库)。

一些相关读物: