Ako preniesť informácie medzi dvoma Python aplikáciami?
sobes.tech AI
Odpoveď od AI
Existuje niekoľko prístupov k prenášaniu informácií medzi dvoma Python aplikáciami, výber závisí od požiadaviek na rýchlosť, objem dát a architektúru:
-
Sokety (Sockets) — nízkoúrovňová metóda na výmenu dát cez sieť alebo lokálne. Umožňuje implementovať klient-server komunikáciu.
-
HTTP API — jeden z najrozšírenejších spôsobov. Jedna aplikácia spustí webový server (napríklad s Flask alebo FastAPI), druhá odosiela HTTP požiadavky s dátami.
-
Fronty správ (Message Queues) — systémy ako RabbitMQ, Kafka alebo Redis Pub/Sub umožňujú asynchrónnu výmenu správ medzi aplikáciami.
-
Zdieľané súbory alebo databázy — aplikácie môžu čítať a zapisovať dáta do spoločného súboru alebo databázy.
-
multiprocessing modul a Pipe/Queue — ak aplikácie bežia na rovnakej stroj a sú to Python procesy, môžu použiť vstavané nástroje na medziprocesovú komunikáciu.
Príklad jednoduchého výmeny cez sokety:
# Server
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('Prijaté:', data.decode())
conn.sendall(b'Prijaté')
conn.close()
# Klient
import socket
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('localhost', 5000))
client.sendall(b'Ahoj od klienta')
response = client.recv(1024)
print('Odpoveď servera:', response.decode())
client.close()
Výber metódy závisí od konkrétnych úloh: pre jednoduchú výmenu na jednej mašine postačí socket alebo fronta; pre distribuované systémy sú vhodnejšie HTTP API alebo správové brokeri.