Я - Java-разработчик промежуточного уровня, новичок в Python и веб-сервисы Uber Newbie.Как опыт обучения, я пытаюсь реализовать веб-сервис RESTful на python для удаленного управления простым индикатором включения / выключения через релейную плату RS232 через USB.Я уже понял основы библиотек web.py и pyserial.Плата, которую я использую, принимает байт ascii в качестве входа для включения / выключения реле и предоставляет байт ascii в качестве обратной связи для каждого отправленного входа.Ответы на отдельные запросы выполняются правильно, но когда делегированный класс web.py отправляет несколько запросов, отзывы иногда путаются.Я предполагаю, что это проблема синхронизации потоков.Каков наилучший способ синхронизировать доступ на запись / чтение к последовательному порту с pyserial, чтобы правильно отправлять отзывы в соответствующий поток web.py?Может ли решение, подобное следующему, считаться правильным?
from threading import RLock
import serial # pyserial library
lock = RLock()
ser = serial.Serial("/dev/ttyACM0", 9600, 1)
def serialOut(self, string):
lock.acquire()
data = ''
try:
ser.open()
ser.write(string)
data = ser.readall()
ser.flushOutput()
finally:
lock.release()
return data