运行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,这主要是由于后端缓慢(用户等待太慢)造成的。 您可能必须优化您的网站性能。
- 你说问题是从一个客户端打一个特定的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()