Я пытаюсь создать неблокирующий поток, который общается с использованием запросов / сокетов для сбора данных с внешнего регистратора данных. Мне известны потоки, асинхронная и многопроцессорная обработка как основные способы асинхронной обработки данных в Python, но я не уверен, что больше всего подходит для этой работы. Мне нужна только одна запись для одновременного запуска, чтобы иметь возможность предоставить параметры (ie максимальная длина записи) при инициализации потока и другую функцию (остановка (само)), чтобы иметь возможность остановить запись и восстановить данные в любое время Я создал скелетный код того, как класс будет выглядеть:
class recorder():
def __init__(self):
self.ip = "127.0.0.1"
self.port = 1567
self.host = "http://"+self.ip
self.session = requests.session()
self.session.post(self.host, "/rest/init")
def record(self, length):
response = self.session.post(self.host, "/rest/startrecording")
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect()
while True: # Need some way of breaking out of this loop...
data = s.recv(28)
# ... more data receiving/formatting code ...
response = self.session.put(self.host, "/rest/stoprecording")
return data
def stop(self):
# some way of communicating to the record method the stop to recording
Итак, мой вопрос: каков наиболее подходящий способ адаптации этого класса для асинхронной записи данных?