Как-то раз пришлось использовать чужое django-app, в котором было много форм, методов и всего остального. И, что само собой разумеется, автор решил не заморачиваться и не делать никакой защиты от спамеров, или от любителей понажимать F5 на тяжелой форме. Переписывать и форкать у меня желания не было, поэтому решил написать middleware, режущий кислород нехорошим людям.
Функционал
- maintenance режим, позволяет выключать view в целом, или отдельные http методы
- глобальные fallback-таймауты сайта, для PATCH, POST и т.д.
- локальные таймауты для view в целом, или для отдельных http-методов
Проще показать пример конфига:
DJANGO_THROTTLING = {
'all': 1000,
'post': 'callable:helpers.trash.my_callback',
'congestion': 'forum.views.congestion',
'django.contrib.admin.options.change_view': {
'post': False,
'all': None,
'uri': '/admin/forum/post/23/',
},
}
Остальные примеры с описаниеми под катом.
Читать полностью »