38

我正在使用来自该站点的 django-on-twisted 脚本在 twisted 上运行 django 应用程序。

所有请求都由 nginx 服务器提供服务,该服务器将相关请求反向代理到twisted。我有一个 API 的 url 设置,它基本上只接收 get 请求并在发送响应之前对 get 参数进行一些处理。但是,当特定客户端访问 api 时,扭曲的服务器就会关闭。下面粘贴的是 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,我假设客户端意外关闭了连接,我对此没有任何问题。客户是否收到响应对我来说并不重要。这是相关的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

来自客户端的请求是有效请求,不会对处理产生不利影响。我已经从外壳测试了它。当我在 django 开发服务器上尝试它时,它也以同样的方式崩溃,没有留下任何接收请求的痕迹。从浏览器测试时,一切都运行良好。此外,twisted 服务器适用于所有常规用例。这是我第一次遇到它的问题。任何帮助或指示将不胜感激。

4

2 回答 2

1
  • 您说问题出在客户点击特定网址(可重现?)
  • 由于它适用于 gunicorn 但不适用于 django-on-twisted,因此脚本无法正常工作或是twisted.web2问题所在。

请尝试$ sh init.sh yourdjangoproject stand

你也可以尝试修改run.pycatch SystemExit

import pdb
try:
   # __main__ stuff here.
except (KeyboardInterrupt, SystemExit):
   pdb.set_trace()
于 2012-10-12T08:53:48.533 回答
1

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

当客户端发送请求并关闭连接而不等待响应时,会出现 499 代码。如果您的 access_log 中有很多 499,这主要是由于后端速度较慢(用户等待太慢)。您可能需要优化您的网站性能。

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

于 2012-09-02T20:21:36.620 回答