我开发了一个django(1.5)应用程序,但昨天我发现它有时无法获得响应并显示空白页面。
糟糕的网址是:http://www.anwcl.com:8000/comment/
但是本地网址可以正常使用(django在我的计算机上提供):http://127.0.0.1:8000/comment/
我在print data
之前在wsgi的finish_response
中添加了self.write(data)
,数据看起来很好,但它不会发送正确的数据包。 Wireshark显示它响应了几个数据包,但它们没有完成,有些数据包丢失了。
以下是wireshark的图像捕获(注意我在我的计算机上提供django,因此我访问http://www.anwcl.com:8000/comment/
意味着我访问了我的计算机):
http://www.anwcl.com/test/error/django_response_truncated_detail.jpg
http://www.anwcl.com/test/error/django_response_good_one.jpg
http://www.anwcl.com/test/error/django_response_bad_one.jpg
http://www.anwcl.com/test/error/django_request_but_no_response.jpg
作为前3个图像,它只能响应3个数据包,最后2个数据包丢失。
作为第4张图片,即使控制台显示[15/Dec/2013 12:37:49] "GET /comment/ HTTP/1.1" 200 6095
,有时它甚至不会响应任何数据包。
一旦我减少了响应大小(删除模板中的大部分内容),那么它就可以正常工作了!
我想知道当我用大HTML回复时是否存在任何错误/限制。
以下是我的配置和网址的详细信息。
服务器配置:
runserver --noreload 0.0.0.0:8000
urls.py:
from django.conf.urls import *
from django.conf import settings
from django.contrib import admin
admin.autodiscover()
from d1.views import *
from vine_comment.views import *
urlpatterns = patterns('',
(r'^accounts/', include('registration.backends.default.urls')),
url(r'^matrix/?$', TemplateView.as_view(template_name='matrix/matrix.html'), name='matrix'),
url(r'^admin/', include(admin.site.urls)),
url(r'^$', TemplateView.as_view(template_name='index.html'), name='index'),
url(r'^comment/(?P<url_b64>.*?)/?$', CommentView.as_view(), name='comment'),
)
from functools import wraps
from django.contrib.staticfiles.views import serve as serve_static
if settings.DEBUG:
def custom_headers(view_func):
@wraps(view_func)
def wrapper(request, *args, **kwargs):
response = view_func(request, *args, **kwargs)
response['Access-Control-Allow-Origin'] = '*'
return response
return wrapper
urlpatterns += patterns('',
url(r'iframe/(?P<url_b64>.*?)/?$', custom_headers(CommentIframeView.as_view()), name='comment_iframe'),
url(r'^static/(?P<path>.*)$', custom_headers(serve_static)),
)