Многопоточность VS Асинхронное программирование

Итак, дабы раз и навсегда разобраться с этим: задам вопрос еще раз.
Прочитав, все равно непонятно каким образом надо писать тех же ботов.
Если

Асинхронность (asynchrony) подразумевает, что операция может быть выполнена кем-то на стороне: удаленным веб-узлом, сервером или другим устройством

То это абсолютно ломает мои познания в асинхронности питона, ведь читал я о ней абсолютно другие вещи.

Итак. Возьмем практический пример: У меня есть бот для ВКонтакте на чистом питоне. Обмен информации идет через CallBack API. При получении сообщения оно кладется в статическую переменную:

if data['secret'] == environ['secret_key']:
   payload = None
if data['object'].get('payload'):
   payload = json.loads(data['object']['payload'])['button']
StaticData.stack_messages.append({'message': data['object']['text'], 'user_id': data['object']['from_id'],'payload': payload})
StaticData.new_message_trigger.set()
return 'ok'

После складирования активируется триггер StaticData.new_message_trigger.set() и после все действия происходят в основном хэндлере:

@staticmethod
def handle() -> None:
    logging.info('Messages handler started')
    while True:
        try:
            vk = BotAPI()
            IDB = InternalDB()
            StaticData.new_message_trigger.wait() # Ждем изменения состояния триггера
            StaticData.new_message_trigger.clear() # Состояние изменилось, очищаем его

            data = StaticData.stack_messages.pop(0) # Получаем проброшенное через статику сообщение
            # Other actions...

Сама архитектура кажется мне очень запутанной и неправильной. Так ли это? Если да, то как хоть примерно преобразовать это в асинхронную структуру?


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