Django是否因为CommonMiddleware连接失败?

时间:2018-09-13 12:48:31

标签: python django

我遇到了一个非常奇怪的问题。我确实从programm卸载。并且注意到有时由于某种原因文件没有上传到Django服务器。开始挖掘,放Charly查看正在发送的数据包。我看到Djnago正在关闭连接。

Package Log

因此,您当然不能使用这些文件。 我开始研究可能是什么问题。播放并使用DATA_UPLOAD_MAX_MEMORY_SIZE,并进行了len(request.body)。没有任何帮助,混乱的Django关闭了连接。防火墙也将其关闭。我想到了逐渐断开中间件的想法。关于奇迹,一切都开始了。

Package Log

最后,它证明是CommonMiddleware。

Middleware

接下来,我试图找到一个确实出现错误的地方。我找到了。

Code

如果您在此代码段之前放置返回响应,那么一切都会正常进行。

Repair code

但是,为什么正是因为这个地方,我才不去旅行。断点没有帮助,通过它们传递并关闭了连接。请帮助,我不知道该怎么办。谢谢!

class Exchange(View):
def get(self, request):
    request_type = request.GET['type']
    request_mode = request.GET['mode']

    if request_type in ('catalog', 'sale') and request_mode == 'checkauth':
        response = HttpResponse()
        response.write('success\n')
        response.write('sessionid\n')
        response.write('123456789')

        return response

    if request_type in ('catalog', 'sale') and request_mode == 'init':
        response = HttpResponse()
        response.write('zip=no\n')
        response.write(f'file_limit={settings.DATA_UPLOAD_MAX_MEMORY_SIZE}')

        return response

    if request_type == 'catalog' and request_mode == 'import':
        return HttpResponse('success')

    return HttpResponse('failure')

def post(self, request):
    len(request.body)

    return HttpResponse('success')

@method_decorator(csrf_exempt)
def dispatch(self, request, *args, **kwargs):
    return super().dispatch(request, *args, **kwargs)

0 个答案:

没有答案