我使用来自this site的django-on-twisted脚本运行django应用程序。
所有请求都由nginx服务器提供服务,该服务器反向代理相关的扭曲请求。我有一个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
来自客户端的请求是有效请求,不会以不利方式影响处理。我从shell测试过它。当我在django开发服务器上尝试它时,它也以相同的方式崩溃,而没有留下任何接收请求的痕迹。从浏览器进行测试时,一切都运行良好。此外,扭曲的服务器适用于所有常规用例。这是我第一次遇到问题。任何帮助或指示将不胜感激。
答案 0 :(得分:1)
rfc中没有499个http代码。 Nginx定义了499个代码。
当客户端发送请求时,无需等待即关闭连接 响应,发生499代码。如果你的身上有很多499 access_log,它主要是由慢速后端引起的(对你来说太慢了) 用户等待)。您可能需要优化网站效果。
答案 1 :(得分:1)
twisted.web2
是问题。请尝试$ sh init.sh yourdjangoproject stand
。
您还可以尝试修改run.py
以抓住SystemExit
:
import pdb
try:
# __main__ stuff here.
except (KeyboardInterrupt, SystemExit):
pdb.set_trace()