Я пытаюсь построить асинхронный шахматный помощник, используя python-chess и Twisted. Я могу заставить все работать синхронно, но у меня возникают проблемы с определением последнего шага (если он есть). Функция обратного вызова, содержащая метод «play» движка, выглядит следующим образом:
def play(fen):
global d
print('play')
board = chess.Board(fen);
limit = chess.engine.Limit(time=15.0)
result = d.engine.play(board, limit)
#result = 'testmove'
return result.move
Я знаю, что вы не можете волшебным образом сделать синхронный код асинхронным, но кажется, что механизм работает на асинхронных функциях через asyncio (оценка выполняется через внешнюю установку Stockfish):
async def play(self,...)
То, что я пытаюсь выяснить, - это то, как я могу избежать блокировки этой функции. Я не знаю, как таким образом интегрировать asyncio с Twisted. Любая помощь будет оценена.