Чӣ гуна иттилоотро байни ду барномаи Python интиқол додан мумкин аст?
sobes.tech AI
Ҷавоб аз AI
Дастурҳои Python байни ду барнома барои интиқоли маълумот чанд роҳ доранд, интихоби он вобаста ба талаботи суръат, ҳаҷми маълумот ва меъморӣ:
-
Сокетҳо (Sockets) — усули пасти сатҳ барои мубодилаи маълумот тавассути шабака ё маҳаллӣ. Имконият медиҳад, ки муоширати муштари-серверро амалӣ кунад.
-
API HTTP — яке аз ҳаллиҳои маъмултарин. Як барнома сервери вебро оғоз мекунад (масалан, бо Flask ё FastAPI), дигаре дархостҳои HTTP бо маълумот мефиристад.
-
Қуттиҳои паём (Message Queues) — системаҳое монанди RabbitMQ, Kafka ё Redis Pub/Sub имкон медиҳанд, ки паёмҳо ба таври асинхрон байни барномаҳо мубодила шаванд.
-
Файлҳои умумӣ ё базаи додаҳо — барномаҳо метавонанд маълумотро дар файл ё базаи додаҳои умумӣ хонда ва нависанд.
-
модул multiprocessing ва Pipe/Queue — агар барномаҳо дар як мошин фаъол бошанд ва процесҳо Python бошанд, метавонанд воситаҳои дарунсохтро барои муоширати байнипроцессӣ истифода кунанд.
Маслиҳат барои мубодилаи оддӣ тавассути сокет:
# Сервер
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('Гирифт:', data.decode())
conn.sendall(b'Гирифт')
conn.close()
# Клиент
import socket
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('localhost', 5000))
client.sendall(b'Салом аз муштарӣ')
response = client.recv(1024)
print('Ҷавоби сервер:', response.decode())
client.close()
Интихоби усул вобаста ба вазифаҳои мушаххас аст: барои мубодилаи оддӣ дар як мошин, сокет ё қуттӣ кофист; барои системҳои тақсимшуда, API HTTP ё брокерҳои паём мувофиқанд.