Всем привет ! Написал модуль который принимает ответ от сервера биржи с котировкой, временем сервера ( частота обновления котировки - 3 раза в секунду ), зацикленный в бесконечность. Вопрос , как передать эти значения в основной скрипт в котором будут обрабатываться эти переменные ( их нужно будет записывать в массив ) . Гуглёж толком не помог ... пробовал multiprocessing и subprocess . Я не жду готового ответа , просто наведите - в какую сторону копать , какие методы использовать лучше ?
Спасибо !
@gtrlaren Я бы использовал Queue (очередь) и Thread(для обработки в несколько потоков) чтобы легко можно передавать данные между воркером и программой (в Вашем случае котировки или что то еще). Можно также использовать redis-queue или kafka или AWS SQS или любые другие для реализации Queue также. Ниже примерная имплементация на python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
from queue import Queue from threading import Thread # Воркер который принимает ответ def worker(): while True: # Получаем значение item = queue.get() # Выводим значение print(item) queue.task_done() queue = Queue() # Количество потоков numberOfThreads = 3 for i in range(numberOfThreads): # Запускаем новый поток thread = Thread(target=worker) thread.daemon = True thread.start() # Данные которые отправляем в worker # для обработки for item in [ "котировка 1", "котировка 2", "котировка 3", "котировка 4", "котировка 5", ]: # Передаем значение воркеру queue.put(item) # ждем пока все задания закончены queue.join() |
Если конечно я правильно Вас понял. Но данный вариант должен работать как мне кажется под Вашу задачу.
@gtrlaren Может иметь смысл сделать новый API точку и потом POST запрос и передавать данные для обновления в основной скрипт?. Как вариант JSON или XML передавать для обновления котировок? Мне кажется это самый простой способ будет заставить комуницировать два скрипта или даже сервера между собой.