Как машина состояний AIOGRAM хранит данные?

Ссылка скопирована
1 ответ

Допустим есть такая функция в конечном автомате на одном из шагов.

@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 (хранение в оперативе сервера).

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Дмитрий К. Ответ

Машина состояний в AIOGRAM хранит данные с помощью контекста пользователя. Каждый пользователь, с которым бот взаимодействует, имеет свой уникальный контекст, в котором могут храниться различные данные, такие как текстовые сообщения, файлы, кнопки и другая информация.

Контекст пользователя представляет собой словарь (dict) в Python, который содержит ключи и соответствующие значения. Этот словарь можно использовать для хранения данных во время сеанса общения с пользователем.

Например, чтобы сохранить данные в контексте пользователя, можно использовать следующий код:

from aiogram import types
 
# Создаем контекст для пользователя
context = types.UserContext()
 
# Сохраняем данные в контексте
context['user_id'] = 12345
context['username'] = 'example_user'

from aiogram import types # Создаем контекст для пользователя context = types.UserContext() # Сохраняем данные в контексте context['user_id'] = 12345 context['username'] = 'example_user'

Таким образом, данные будут храниться в контексте пользователя и будут доступны во время выполнения бота. Кроме того, AIOGRAM предоставляет возможность сохранения контекста пользователя в базе данных или другом хранилище для долгосрочного хранения информации.

Таким образом, машина состояний AIOGRAM хранит данные с помощью контекста пользователя, который представляет собой словарь, содержащий ключи и значения, необходимые для взаимодействия с пользователем.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно