Асинхронная обработка "POST" запроса. Фреймворк iohttp
Скажите пожалуйста, как организовывать обработку входящих запросов(асинхронных), использую фреймворк "aiohttp". Имеется всего один обработчик запросов:
async def receive_update(request):
""" """
hand_serv(await request.json()) # создается экземп.класса, в котором происходит дальнейшая обработка запроса
return web.json_response({'ok': True})
Как сделать, чтобы каждый из поступивших запросов мог обрабатываться параллельно т.е. чтобы вновь пришедший запрос не дожидался окончания действий происходящих в hand_serv(await request.json()), а мог там же параллельно обрабатываться? Возможно ли это вообще?
Внутри hand_serv():
class HandlerServer:
""" """
def __init__(self, request_json):
self.request_db = RequestsDb()
self.hand_req_db = HandlerReqDb()
self.teleg = Telegram()
self.req = request_json
self.chat_id = self.req["message"]["chat"]["id"]
self.text_message = self.req["message"]["text"] if "text" in self.req["message"] else ""
self.select_comand()
def start_command(self):
""" """
user_exist = self.hand_req_db.user_exist(self.chat_id)
if not user_exist:
add_user = self.request_db.add_user_info(self.chat_id)
if add_user:
self.teleg.select_iphone(self.chat_id)
else:
status_take_iphone = self.hand_req_db.get_status_take_iphone(self.chat_id)
if status_take_iphone:
self.teleg.get_picture_chang_iph(self.chat_id)
else:
self.teleg.select_iphone(self.chat_id)
def any_iphon_command(self):
""" """
user_exist = self.hand_req_db.user_exist(self.chat_id)
if user_exist:
stat_take_iphone = self.request_db.set_status_take_iphone(self.chat_id)
set_id_iphone = self.request_db.set_id_iphone(self.chat_id, self.text_message) # пользователю присваивается id_iphone
if stat_take_iphone and set_id_iphone:
self.teleg.get_picture_chang_iph(self.chat_id)
def get_wallpapers_command(self):
""" """
user_exist = self.hand_req_db.user_exist(self.chat_id)
stat_take_iphone = self.request_db.set_status_take_iphone(self.chat_id)
if user_exist and stat_take_iphone: # если пользователь есть в БД и он уже выбрал модель своего айфона
self.teleg.send_message(self.chat_id, "Секундочку, Ваши обои тоже ждут встречи с Вами \U0001f929")
self.teleg.send_photo(self.chat_id)
def stop_command(self):
""" """
del_user = self.request_db.del_user(self.chat_id)
if del_user:
text = """Если Вы вновь захотите воспользоваться ботом, нажмите - "Начать" """
self.teleg.get_start_butt(self.chat_id)
self.teleg.send_message(self.chat_id, text)
def select_comand(self):
""" """
if self.text_message == "/start":
self.start_command()
if self.text_message in self.hand_req_db.get_iphone_list():
self.any_iphon_command()
if self.text_message == "Получить обои":
self.get_wallpapers_command()
if self.text_message == "Изменить модель iphone":
self.teleg.select_iphone(self.chat_id)
if self.text_message == "Начать":
self.start_command()
if self.text_message == "/stop":
self.stop_command()
```