Jak předat informace mezi dvěma Python aplikacemi?
sobes.tech AI
Odpověď od AI
Existuje několik přístupů k přenosu informací mezi dvěma aplikacemi v Pythonu, volba závisí na požadavcích na rychlost, objem dat a architekturu:
-
Sokety (Sockets) — nízkoúrovňová metoda pro výměnu dat po síti nebo lokálně. Umožňuje implementaci klient-server komunikace.
-
HTTP API — jeden z nejrozšířenějších způsobů. Jedna aplikace spustí webový server (například s Flask nebo FastAPI), druhá odesílá HTTP požadavky s daty.
-
Fronty zpráv (Message Queues) — systémy jako RabbitMQ, Kafka nebo Redis Pub/Sub umožňují asynchronní výměnu zpráv mezi aplikacemi.
-
Sdílené soubory nebo databáze — aplikace mohou číst a zapisovat data do společného souboru nebo databáze.
-
Modul multiprocessing a Pipe/Queue — pokud jsou aplikace spuštěny na stejné stroji a jsou to procesy v Pythonu, lze použít vestavěné prostředky pro meziprocesovou komunikaci.
Příklad jednoduché výměny přes 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('Přijato:', data.decode())
conn.sendall(b'Přijato')
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('Odpověď serveru:', response.decode())
client.close()
Volba metody závisí na konkrétních úkolech: pro jednoduchou výměnu na stejném stroji postačí socket nebo fronta; pro distribuované systémy jsou vhodnější HTTP API nebo message brokery.