Каков наилучший способ связи между приложениями Python 2 с помощью обратных вызовов? - PullRequest
0 голосов
/ 25 октября 2018

У меня есть 2 независимых приложения Python 2, запущенных на одном компьютере с Linux (Ubuntu).

Я хочу отправлять сообщения от одного к другому (двунаправленный) и получать эти сообщения внутри функции обратного вызова.

Возможно ли это?У вас есть пример в качестве ссылки?

Спасибо

1 Ответ

0 голосов
/ 21 декабря 2018

Для связи между приложениями python доступны различные варианты.

Простой способ - использовать API на основе HTTP.Каждое приложение будет предоставлять определенный порт, и обмен данными будет происходить путем обмена 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}

Обратите внимание, что если действие, выполненное в app1 после получения HTTP-запроса, принимаетмного времени, это может привести к ошибке тайм-аута.В таком случае попробуйте запустить действие в другом потоке или использовать альтернативный протокол связи (например, сокеты, ZeroMQ Messaging Library).

Некоторые связанные чтения:

...