Промежуточное программное обеспечение сеанса: промежуточное программное обеспечение до или после транзакции? - PullRequest
1 голос
/ 12 марта 2012

Что касается порядка промежуточного программного обеспечения, этот вопрос гласит:

SessionMiddleware

  • До TransactionMiddleware: нам здесь не нужны транзакции

Почему я не хочу, чтобы мои сеансы обновлялись в моей транзакции? Если сеанс обновляется как побочный эффект чего-то, что происходит в представлении, и представление перестает работать, я не могу представить случай, когда я хотел бы, чтобы сеанс, тем не менее, обновлялся, как если бы он не потерпел неудачу. (Очевидно, что если сессионный движок не основан на базе данных, к этой проблеме нужно было бы обратиться другим путем.)

Пожалуйста, предоставьте ясный вариант использования, почему я могу захотеть, чтобы SessionMiddleware работал вне TransactionMiddleware.

1 Ответ

3 голосов
/ 12 марта 2012

Промежуточное программное обеспечение сеанса используется промежуточным программным обеспечением сообщений.Обычно мы предпочитаем исключать промежуточное программное обеспечение сообщений из транзакций.

со страницы промежуточного программного обеспечения сообщений

Если вы используете серверную часть хранилища, которая использует сеансы (по умолчанию), 'django.contrib.sessions.middleware.SessionMiddleware' должен быть включен и отображаться перед MessageMiddleware в вашем MIDDLEWARE_CLASSES.

Поскольку мы можем захотеть отображать ошибки транзакций как пользовательские сообщения, таким образом, мы исключаем Message Middle-ware из транзакций.

Также в длительных процессах я обычно использую сообщения / сеанс для обновления статуса процесса.То же самое можно получить с помощью вызова Ajax.Если сообщение или сеанс MW помещаются после транзакций, обновления статуса не будут реагировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...