2012-03-28 1 views
1

У меня есть приложение django, которое используется для управления регистрации в опросе.Вопросы о безопасности потока django

Есть фиксированное количество слотов, и я хочу «зарезервировать» слоты для пользователей, когда они регистрируются. В одном из моих представлений я получаю следующий доступный слот и резервирую его (или перенаправляю пользователя, если нет доступных слотов.)

Я хочу защитить от случая, когда два пользователя подписываются одновременно зарегистрированный для того же слота, потому что метод «get_next_available_slot» возвратил тот же слот для обоих пользователей.

Для этого я пытаюсь понять использование процессов и потоков с помощью представлений Django.

1) Является ли каждый запрос обработанным в отдельном потоке и будет использовать LOCK() для блокировки потокового модуля python?

2) Я бегу apache на RHEL с modwsgi. Как настроить Apache/modwsgi для обеспечения более простого и простого решения для обработки вышеуказанной ситуации?

Я вообще не ожидаю огромной нагрузки на веб-приложение. Поэтому я хотел бы получить более простое решение вместо высокопроизводительного.

+0

Для получения дополнительной информации о моделях процессов/потоков в Apache/mod_wsgi читайте http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading –

ответ

2

Вы не должны делать предположения о настройке потока/процесса для приложения django, потому что это зависит от используемого вами веб-сервера и того, как django интегрирован в него. Поэтому методы межпроцессной коммуникации не должны полагаться на эти детали, чтобы быть надежными. Одним из хороших решений является использование встроенной библиотеки кеша для блокировок и общих данных.

Вот блокировка кеша good example, обеспечивающая выполнение только одного экземпляра задачи сельдерея за раз. Вы также можете применить его к обычным запросам.

1

Вы не должны беспокоиться об этом.

Эти слоты хранятся в базе данных прямо? База данных должна обрабатывать все механизмы блокировки для вас, просто убедитесь, что вы запускаете все под транзакцией, и все будет в порядке.