Sobes.tech
Middle

Как да предадем информация между две Python приложения?

sobes.tech AI

Отговор от AI

Има няколко подхода за предаване на информация между две Python приложения, изборът зависи от изискванията за скорост, обем на данните и архитектура:

  1. Сокети (Sockets) — ниско ниво за обмен на данни по мрежа или локално. Позволява реализиране на клиент-сървър взаимодействие.

  2. HTTP API — един от най-разпространените решения. Едно приложение стартира уеб сървър (например с Flask или FastAPI), друго изпраща HTTP заявки с данни.

  3. Очереди за съобщения (Message Queues) — системи като RabbitMQ, Kafka или Redis Pub/Sub позволяват асинхронен обмен на съобщения между приложения.

  4. Общи файлове или бази данни — приложенията могат да четат и записват данни в общ файл или база данни.

  5. Модул multiprocessing и Pipe/Queue — ако приложенията работят на една машина и са процеси на Python, могат да използват вградени средства за междупроцесна комуникация.

Пример за прост обмен чрез сокети:

# Сървър
import socket

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('localhost', 5000))
server.listen(1)
conn, addr = server.accept()
data = conn.recv(1024)
print('Получено:', data.decode())
conn.sendall(b'Прието')
conn.close()

# Клиент
import socket

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('localhost', 5000))
client.sendall(b'Здравей от клиента')
response = client.recv(1024)
print('Отговор от сървъра:', response.decode())
client.close()

Изборът на метод зависи от конкретните задачи: за прост обмен на една машина подходящи са сокет или опашка, за разпределени системи — HTTP API или брокери на съобщения.