2017-03-17 21 views
0

私はGoogle Chromeコンソールのajaxリクエスト時間を見ています。 私はバックエンドで測定しましたが、mysqlクエリは5ミリ秒間実行されます。 Chromeのコンソールで私はthis pictureDjango + Gunicorn big TTFB time

TTFB時間333.07ミリ秒を参照してください。 私は9人のgunicornワーカー、DjangoフレームワークとRESTフレームワークを持っています。何がそんなに時間がかかるの?

例えば、 私の見解:

@api_view(['GET']) 
def get_gallery(request, slug): 
    query = Gallery.objects.filter(route__slug=slug, route__is_active=True) 

    return JSONResponse(GallerySerializer(query, many=True).data) 


class JSONResponse(HttpResponse): 
    """ 
    An HttpResponse that renders its content into JSON. 
    """ 
    def __init__(self, data, **kwargs): 
     content = JSONRenderer().render(data) 
     kwargs['content_type'] = 'application/json; charset=utf-8' 
     super(JSONResponse, self).__init__(content, **kwargs) 

は私のシリアライザ:

class GallerySerializer(ModelSerializerWithAuth): 
    image = serializers.ImageField(use_url=False) 
    thumb = serializers.ImageField(use_url=False) 

    class Meta: 
     model = Gallery 
     fields = ('id', 'image', 'thumb') 

gunicornの設定:

bind = '127.0.0.1:9090' 
errorlog = '/path/to/log' 
timeout=120 
user = 'user' 

import multiprocessing 
workers = multiprocessing.cpu_count() * 2 + 1 
+1

あなたはプロファイラを使用してみましたが使用するのですか? –

+0

あなたのコードを見なくても、どうやってこの質問に答えるのですか?クリスタルボールを使うべきでしょうか? –

+0

@NilsWerner、プロファイラとは何ですか? – MarinaaaniraM

答えて

0

は、答えをフォーマットする時だろう。デフォルトでは、レスポンスはメモリ内に構築され、クライアントに送信されます。

可能な解決策/回避策はStreamingHttpResponse

関連する問題