Как Вы прослеживаете 500 ошибок сервера с Apache + mod_python + Django? [дубликат]

5
задан Community 23 May 2017 в 10:28
поделиться

2 ответа

В общем и обобщенном виде

Сильные указатели гарантируют их собственную действительность. Используйте их, например, когда:

  • Вы владеете объектом, на который указывают; вы создаете и уничтожаете его
  • У вас нет определенного поведения, если объект не существует
  • Необходимо принудительно убедиться, что объект существует.

Слабые указатели гарантируют знание их собственной действительности. Используйте их, например, когда:

  • Вы получаете доступ к нему, но он не ваш.
  • Определено поведение, если объект не существует

Блокировка () на слабом указателе возвращает сильный указатель; вот как вы получаете доступ к слабому указателю. Если объект больше не является допустимым (он был удален и т.д.), то сильный указатель будет иметь значение NULL, в противном случае он будет указывать на объект. Вам нужно будет проверить это.

Это настроено таким образом, что вы не можете случайно удалить объект во время его использования, потому что вы сделали временный (локальный) сильный указатель, и, таким образом, гарантировал существование объекта, в то время как сильный указатель остается. По завершении использования объекта, как правило, сильный указатель выпадает из области действия (или переназначения его), что позволяет удалить объект. Для многопоточности, относитесь к ним с той же осторожностью, что и к другим вещам, которые не имеют встроенной безопасности потоков, отмечая, что гарантия, о которой я говорил выше , будет удерживаться при многопоточности. АФАИК они не делают ничего особенного в прошлом.

Общие указатели повышения также имеют такие же функции, как и сборщик мусора, так как когда последний сильный указатель на объект уходит или указывает где-то еще, объект удаляется.

В других ответах также указаны рабочие характеристики и циклические зависимости.

По сути, я бы сказал, что библиотека общих указателей Boost позволяет не путать создание программы, но она не заменяет собой время, необходимое для правильного проектирования указателей, владения объектами и времени жизни. При наличии такой конструкции можно использовать библиотеку для ее применения. Если у вас нет такого дизайна, вы, скорее всего, столкнетесь с другими проблемами, чем раньше.

-121--1158692-

Cygwin иногда переносит списки ACL в файлы, вероятно, вам придется использовать cacls или chmod, чтобы исправить его, прежде чем вы сможете удалить файл.

-121--2267775-

Да, в apache необходимо указать, где находится журнал ошибок для виртуального сервера. Например, имя моего виртуального сервера - djangoserver, а в моем файле/etc/apache2/sites-enabled/djangoserver - строка

ErrorLog /var/log/apache2/djangoserver-errors.log

Хотя теперь, когда я перечитал ваш вопрос, похоже, вы уже нашли журнал apache. Я не верю, что есть какой-то отдельный журнал для mod_python или самого питона.

Это производственная установка?

Если вы не захотите включить режим отладки , то Django выдаст очень подробные экраны с информацией об ошибках. В settings.py проекта установите

DEBUG = True
TEMPLATE_DEBUG = DEBUG

, чтобы отключить общие 500 экранов ошибок и просмотреть подробную разбивку.

4
ответ дан 14 December 2019 в 19:15
поделиться

Сальса делает несколько хороших предложений. Добавим, что сервер Development Django - отличная среда для отслеживания этих вещей. Иногда я даже бегу на это из производственного каталога (вздох!) С ./ Manage.py Runserver 0.0.0.0:8000 Так что I знаю Я использую тот же код.

По общему признанию, иногда что-то потерпит неудачу под Apache, а не под DEV Server, но это намек в себя.

1
ответ дан 14 December 2019 в 19:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: