使用回调在 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 消息传递库)。
一些相关读物:
- Basic Python client socket example
- Communication between two python scripts
- https://www.digitalocean.com/community/tutorials/how-to-work-with-the-zeromq-messaging-library
我在同一台 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 消息传递库)。
一些相关读物:
- Basic Python client socket example
- Communication between two python scripts
- https://www.digitalocean.com/community/tutorials/how-to-work-with-the-zeromq-messaging-library