Мне нужно сделать так, чтобы функция s_settings не останавливала программу, я вызываю эту функцию в асинхронной функции, в set_settings
получаю данные с сервера, в send_settings
отправляю данные на сервер. Я не могу сделать методы (set_settings и send_settings) асинхронными. Но мне нужно сделать эту функцию неблокирующей
def s_settings(id, _user_settings, all_settings):
if 'category' in set_settings(str(id)):
_user_settings[str(id)] = set_settings(str(id)) # Get from the Server
print(user_settings)
_user_settings[str(id)]['category'].append(
all_settings[str(id)]['category'])
_user_settings[str(id)]['time_to_receive'].append(
all_settings[str(id)]['time_to_receive'])
_user_settings[str(id)]['language'].append(all_settings[str(id)]['language'])
send_settings(_user_settings[str(id)], str(id)) # Send to the server
Ну это облом. Вы должны смоделировать эту функцию как сопрограмму. Но поскольку вы не можете полагаться на цикл событий для опроса вызова блокирующей функции send_settings
за вас, вы можете создать отдельный поток, в котором будет выполняться эта функция. Ваша сопрограмма должна быть неблокирующей и иметь возможность опросить этот поток и получить результат. Вероятно, это будет довольно сложная реализация.
Это было решено loop.run_in_executor()