При попытке вызвать асинхронную функцию из синхронной возникает ошибка Timeout context

При нажатии на кнопку runRobot запускается синхронная функция, которая по идее должна вызывать асинхронную с целью закрытия всех ордеров. Но при выполнении возникает ошибка: Timeout context manager should be used inside a task, и необходимая задача в асинхронной функции не отрабатывает.

async def on_close_orders():
    global orders_info
    print('Сработала кнопка "закрыть все ордера')
    for i in orders_info:
        await client.cancel_order(symbol=i['symbol'], orderId=i['order_id'])
    orders_info = []

class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.StopButton.clicked.connect(self.stopRobot)
        self.ui.CloseAllButton.clicked.connect(self.closeAll)
        self.ui.StartButton.clicked.connect(self.runRobot)
    def closeAll(self):
        global check
        if client:
            print('Закрыть все сделки')
            loop = asyncio.new_event_loop()
            asyncio.set_event_loop(loop)
            try:
                loop.run_until_complete(asyncio.wait_for(on_close_orders(), timeout=0.1))
                loop.close()
            except asyncio.TimeoutError:
                print("the operation timed out")
            self.ui.setBrowser.setText(f'Все сделки закрыты')

До этого использовались разные способы вызова функции, но все они либо сразу выдавали различные ошибки, либо ничего не происходило. Подскажите, в чем ошибка вызова асинхронной функции?


Ответы (0 шт):