Я просматриваю шаблон шаблона Django из-за проблемы с потоками, которую мы видим при одновременном одновременном вызове одной и той же услуги с использованием AJAX с одной веб-страницы.Django TemplateView thread security
Симптомы - это то, что вы ожидаете от проблемы с потоками, связанной с запросами/ответами на сервере. Иногда значение, которое мы ожидаем от первого вызова, возвращается как для первого, так и для второго, иногда оно обратное, иногда оно работает так, как ожидалось. Если мы сериализуем вызовы AJAX, результаты всегда верны.
Глядя на код, я вижу, что TemplateView наследует от TemplateResponseMixin, который имеет следующую реализацию:
def render_to_response(self, context, **response_kwargs):
"""
Returns a response, using the `response_class` for this
view, with a template rendered with the given context.
If any keyword arguments are provided, they will be
passed to the constructor of the response class.
"""
response_kwargs.setdefault('content_type', self.content_type)
return self.response_class(
request = self.request,
template = self.get_template_names(),
context = context,
**response_kwargs
)
Таким образом, TemplateView требует переменную экземпляра с именем self.request
. Если данный экземпляр подкласса TemplateView используется для одновременных запросов, я предполагаю, что вы увидите поведение, которое мы видим.
Я прав? Я не изучал поточную модель Django в отношении обработки одновременных запросов. Если их модель потоков похожа на ту, которая используется в каждом ядре Java Servlet, с которым я работал, тогда я не могу придумать, как это не сломается. Если Django делает что-то похожее на использование пула экземпляров TemplateView для обработки параллельных запросов или делает что-то рудиментарное, как запросы на очередность, то я ищу не в том месте, и нам нужно искать в другом месте, чтобы исправить нашу проблему с потоками.
Заранее за вашу помощь.
Вы должны разместить свой urls.py для этого вида. –