При попытке вызвать асинхронную функцию из синхронной возникает ошибка 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'Все сделки закрыты')
До этого использовались разные способы вызова функции, но все они либо сразу выдавали различные ошибки, либо ничего не происходило. Подскажите, в чем ошибка вызова асинхронной функции?