Sobes.tech
Middle

Hogyan lehet információt átadni két Python alkalmazás között?

sobes.tech MI

Válasz az MI-től

Különböző megközelítések léteznek két Python alkalmazás közötti információátvitelre, a választás a sebesség, az adatmennyiség és az architektúra követelményeitől függ:

  1. Socketek (Sockets) — alacsony szintű módszer hálózaton vagy helyben történő adatcserehez. Lehetővé teszi kliens-szerver kommunikáció megvalósítását.

  2. HTTP API — az egyik legelterjedtebb megoldás. Egy alkalmazás web szervert indít (pl. Flask vagy FastAPI segítségével), egy másik pedig adatokat tartalmazó HTTP kéréseket küld.

  3. Üzenetsorok (Message Queues) — olyan rendszerek, mint a RabbitMQ, Kafka vagy Redis Pub/Sub, lehetővé teszik az aszinkron üzenetcsere alkalmazások között.

  4. Közös fájlok vagy adatbázisok — az alkalmazások olvashatnak és írhatnak adatokat közös fájlba vagy adatbázisba.

  5. multiprocessing modul és Pipe/Queue — ha az alkalmazások ugyanazon a gépen futnak és Python folyamatok, akkor beépített eszközöket használhatunk a folyamatok közötti kommunikációhoz.

Egyszerű socket alapú kommunikáció példája:

# Szerver
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('Kaptuk:', data.decode())
conn.sendall(b'Elfogadva')
conn.close()

# Kliens
import socket

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('localhost', 5000))
client.sendall(b'Szia a kliensből')
response = client.recv(1024)
print('Szerver válasza:', response.decode())
client.close()

A módszer kiválasztása a konkrét feladattól függ: egyszerű csere esetén ugyanazon a gépen elegendő lehet egy socket vagy sor; elosztott rendszerekhez az HTTP API vagy üzenetközvetítők jobban megfelelnek.