Sobes.tech
Middle

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:

  1. Sokety (Sockets) — nízkoúrovňová metoda pro výměnu dat po síti nebo lokálně. Umožňuje implementaci klient-server komunikace.

  2. 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.

  3. Fronty zpráv (Message Queues) — systémy jako RabbitMQ, Kafka nebo Redis Pub/Sub umožňují asynchronní výměnu zpráv mezi aplikacemi.

  4. Sdílené soubory nebo databáze — aplikace mohou číst a zapisovat data do společného souboru nebo databáze.

  5. 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.