Как машина состояний AIOGRAM хранит данные?
Допустим есть такая функция в конечном автомате на одном из шагов.
@router.message(Command(...), StateFilter(...)) async def myfunction(message: Message, state: FSMContext): await state.update_data(text=message.text) data = await state.get_data() print(data) await state.set_state(NextState) |
@router.message(Command(...), StateFilter(...)) async def myfunction(message: Message, state: FSMContext): await state.update_data(text=message.text) data = await state.get_data() print(data) await state.set_state(NextState)
Если множество пользователей, скажем 500 вызовут её, то для всех пользователей message.text будет храниться отдельно когда применяется await state.update_data(text=message.text), не перепишет ли кто-то чьи-то другие данные?
Важное условие, ни бд, ни MemoryStorage не используется.
На двух пользователях данные вроде хранятся отдельно, проверял через print, но что насчет 500?
Дополнительно:
Ответы:
Если множество пользователей, скажем 500 вызовут её
А Вы попробуйте, программист должен уметь тестировать.
При использование await state.update_data(text=message.text) данные сохраняются отдельно, для каждого из пользователей.
Важное условие, ни бд, ни MemoryStorage не используется.
В aiogram по дефолту используется MemoryStorage (хранение в оперативе сервера).
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Машина состояний в AIOGRAM хранит данные с помощью контекста пользователя. Каждый пользователь, с которым бот взаимодействует, имеет свой уникальный контекст, в котором могут храниться различные данные, такие как текстовые сообщения, файлы, кнопки и другая информация.
Контекст пользователя представляет собой словарь (dict) в Python, который содержит ключи и соответствующие значения. Этот словарь можно использовать для хранения данных во время сеанса общения с пользователем.
Например, чтобы сохранить данные в контексте пользователя, можно использовать следующий код:
from aiogram import types # Создаем контекст для пользователя context = types.UserContext() # Сохраняем данные в контексте context['user_id'] = 12345 context['username'] = 'example_user'
Таким образом, данные будут храниться в контексте пользователя и будут доступны во время выполнения бота. Кроме того, AIOGRAM предоставляет возможность сохранения контекста пользователя в базе данных или другом хранилище для долгосрочного хранения информации.
Таким образом, машина состояний AIOGRAM хранит данные с помощью контекста пользователя, который представляет собой словарь, содержащий ключи и значения, необходимые для взаимодействия с пользователем.