django-silk показывает 0 раз для всех запросов
Использование django 2.2.14 и django-silk 3.0. Просто верните общее время, но все запросы равны нулю. Что-то не так с версией django-silk или django? Как я могу решить причудливую проблему.
Package Version Django 2.2.14 django-silk 3.0.2
[Шелковая выставка] введите описание изображения здесь
3 ответа
Быстрый ответ
Набор
SILKY_PYTHON_PROFILER_RESULT_PATH
в твоей
settings.py
Например:
SILKY_PYTHON_PROFILER_RESULT_PATH = "/var/profiler"
Вы должны убедиться, что указанный каталог существует. В документации шелка говорится, что он должен использовать папку мультимедиа, если она не установлена, но почему-то не работает.
# If this is not set, MEDIA_ROOT will be used.
SILKY_PYTHON_PROFILER_RESULT_PATH = '/path/to/profiles/'
Есть несколько вещей, которые вам нужно убедиться, что они установлены.
Основным важным является добавление следующих флагов env перед запуском приложения.
В вашей.env
добавлять:
SILKY_PYTHON_PROFILER=True
Если у вас естьSILKY_INTERCEPT_FUNC
метод в вашей гарантии, что он возвращает правильное логическое значение на основе запроса, например
def SILKY_INTERCEPT_FUNC(request):
"""log only session has recording enabled."""
return 'record_requests' in request.session
Кроме того, убедитесь, что вы добавляете промежуточное ПО шелка в правильном порядке.
Вsettings.py
добавьте следующее:
MIDDLEWARE = [
...
'silk.middleware.SilkyMiddleware',
...
]
INSTALLED_APPS = (
...
'silk'
)
Примечание. Размещение промежуточного программного обеспечения является конфиденциальным. Если промежуточное ПО, предшествующее silk.middleware.SilkyMiddleware, вернется из process_request, тогда SilkyMiddleware никогда не сможет выполниться. Поэтому вы должны убедиться, что любое промежуточное ПО, размещенное ранее, никогда ничего не возвращает из process_request. См. документы django для получения дополнительной информации об этом.
Ссылка: https://github.com/jazzband/django-silk#installation
У меня была аналогичная проблема с конечной точкой, которая загружалась долго. Заметил, чтоMySQL
прервано соединение сError 1153 - Got a packet bigger than 'max_allowed_packet' bytes
Чтобы это исправить, обновитеmy.cnf
в/etc/mysql/
net_buffer_length=1000000
max_allowed_packet=1000000000
или запустите:
set global net_buffer_length=1000000;
set global max_allowed_packet=1000000000;