运行django时,扭曲的服务器意外崩溃

我正在使用本网站上的django-on-twisted脚本来运行一个django应用程序。

所有请求都由一个nginx服务器提供服务,该服务器将相关请求反向代理为扭曲。 我有一个API的API设置,基本上只是接收请求,并在发送响应之前对get参数进行一些处理。 但是,当一个特定的客户端正在打api时,扭曲的服务器就会closures。 下面粘贴的是Nginx的日志:

the.ip.of.client - - [21/Apr/2012:11:30:36 -0400] "GET /api/url/?get=params&more=params HTTP/1.1" 499 0 "-" "Java/1.6.0_24" 

扭曲的日志显示什么,但在这一点上扭曲停止工作。 通过错误代码499,我假设客户端意外closures连接,这是我没有问题。 客户是否收到回复对我来说并不重要。 这里是相关的Django视图:

 def api_url(request): if request.GET: get_param = request.GET.get('get', [''])[0] more_param = request.GET.get('more', [''])[0] #some processing here based on the get params return HttpResponse('OK') else: raise Http404 

来自客户的请求是有效的请求,不会以不利的方式影响处理。 我已经从shell中testing了它。 当我在django开发服务器上尝试时,它也以同样的方式崩溃,没有留下任何接收请求的痕迹。 从浏览器进行testing时,一切正常。 此外,扭曲的服务器适用于所有常规使用情况。 这是我第一次面临一个问题。 任何帮助或指针将不胜感激。

rfc中没有499的http代码。 Nginx自己定义了499个代码。

当一个客户端发送一个请求,并closures连接而不等待响应,就会产生一个499的代码。 如果access_log中有大量的499s,这主要是由于后端缓慢(用户等待太慢)造成的。 您可能必须优化您的网站性能。

http://forum.nginx.org/read.php?2,213789,213794#msg-213794

  • 你说问题是从一个客户端打一个特定的url(可重现?)
  • 因为它适用于gunicorn而不是django-on-twisted,脚本无法正常工作或twisted.web2是问题。

请尝试$ sh init.sh yourdjangoproject stand

你也可以尝试修改run.py来捕获SystemExit

 import pdb try: # __main__ stuff here. except (KeyboardInterrupt, SystemExit): pdb.set_trace()