Огромная разница во времени между профайлером Django и реальным HTTP-ответом - PullRequest
0 голосов
/ 15 октября 2018

Я использую django-rest-framework для создания RESTful API.У меня проблемы с задержкой ответа, поэтому я решил использовать библиотеку silk для профилирования ответа представления.Вот код вида:

class ChecklistDetail(APIView):
    permission_classes = (permissions.IsAuthenticated, StaffPermission)

    @silk_profile(name='get ChecklistDetail')
    def get(self, request, pk, format=None):
        # pylint: disable=E1101
        checklist = Checklist.objects.get(pk=pk)
        serializer = ChecklistSerializer(checklist, many=False)
        return Response(serializer.data)

После выполнения запроса у меня были следующие результаты:

Результат шелкового профилирования

Почтальон Тиммингс

Это разница почти в 50 раз!

Может ли кто-нибудь помочь мне найти и исправить эту разницу?

Класс StaffPermission:

class StaffPermission(permissions.BasePermission):
    message = 'Only active staff can perform unsafe methods.'

    def has_permission(self, request, view):
        if request.method in permissions.SAFE_METHODS:
            return request.user.is_authenticated and request.user.is_active
        else:
            return request.user.is_staff and request.user.is_active

Моя конфигурация nginx:

upstream atlas-intelligence-server {
  ip_hash;
  server atlas-intelligence-server:80;
}

# portal
server {
  location / {
        proxy_pass http://atlas-intelligence-server/;
  }
  listen 80;
  client_max_body_size 100M;
  server_name localhost;

  # Avoid 504 HTTP Timeout Errors
  proxy_connect_timeout       605;
  proxy_send_timeout          605;
  proxy_read_timeout          605;
  send_timeout                605;
  keepalive_timeout           605;
}

Моя команда gunicorn:

gunicorn atlas_intelligence.wsgi -b 0.0.0.0:80 --workers 2 --log-level debug --error-logfile /var/log/gunicorn_err.log --log-file /var/log/gunicorn.log --timeout 300

И машины nginx (nginx:1.15.4-alpine), и машины django являются контейнерами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...