await
заставляет ожидать завершения всей функции и только потом происходит переход к следующей итерации.asyncio.create_task
, то создается и запускается фоновая задача - цикл продолжается после запуска этой асинхронной функции и не ждет ее завершения.хотя в функции pool_user нет ничего, что могло бы блокировать асинхронный цикл
if await user.connect()
await bot.send_message
SynchronizedCollection<T>
- это легаси из .NET фреймворка, в современном рантмайме ты его не найдешь.BlockingCollection<T>
Channel<T>
Говорю сразу мьютекс мне не подходит, так как это уже не будет параллельно.
Как можно реализовать такое поведение?
@dp.message_handler(commands=['start'])
async def bot_start(message: types.Message):
if message.chat.type == "private":
# Вот здесь ты не вставил await
if not new_ton.user_exists(message.from_user.id):
await new_ton.add_user(message.from_user.id)
await message.answer(' Добро пожаловать', reply_markup=client_kb.main_buttons)
@dp.message_handler(commands=['start'])
async def bot_start(message: types.Message):
if message.chat.type == "private":
# А вот здесь сделал
user_exists = await new_ton.user_exists(message.from_user.id)
if not user_exists:
await new_ton.add_user(message.from_user.id)
await message.answer(' Добро пожаловать', reply_markup=client_kb.main_buttons)
@dp.message_handler(commands=['start'])
async def bot_start(message: types.Message):
if message.chat.type == "private":
if not await new_ton.user_exists(message.from_user.id):
await new_ton.add_user(message.from_user.id)
await message.answer(' Добро пожаловать', reply_markup=client_kb.main_buttons)