Как я могу ожидать асинхронную функцию из Twisted Deferred? - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь построить асинхронный шахматный помощник, используя 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. Любая помощь будет оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...