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:
-
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.
-
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.
-
Üzenetsorok (Message Queues) — olyan rendszerek, mint a RabbitMQ, Kafka vagy Redis Pub/Sub, lehetővé teszik az aszinkron üzenetcsere alkalmazások között.
-
Közös fájlok vagy adatbázisok — az alkalmazások olvashatnak és írhatnak adatokat közös fájlba vagy adatbázisba.
-
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.