2016-07-11 2 views
1

Я запускаю Django с сервером Apache2 на бэкэнде Ubuntu. При загрузке моего сайта я получаю ошибку внутреннего сервера 500. Журнал Apache выглядит следующим образом:mail_admins, вызывающий соединение, отказался от Django/Apache2?

AH00094: Command line: '/usr/sbin/apache2'  
mod_wsgi (pid=9568): Exception occurred processing WSGI script '/home/ubuntu/project/project/wsgi.py'. 
Traceback (most recent call last): 
File "/home/ubuntu/.virtualenvs/api/local/lib/python2.7/site- packages/django/core/handlers/wsgi.py", line 177, in __call__ 
    response = self.get_response(request) 
File "/home/ubuntu/.virtualenvs/api/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 216, in get_response 
    'request': request 
File "/usr/lib/python2.7/logging/__init__.py", line 1178, in error 
    self._log(ERROR, msg, args, **kwargs) 
File "/usr/lib/python2.7/logging/__init__.py", line 1271, in _log 
    self.handle(record) 
File "/usr/lib/python2.7/logging/__init__.py", line 1281, in handle 
    self.callHandlers(record) 
File "/usr/lib/python2.7/logging/__init__.py", line 1321, in  callHandlers 
    hdlr.handle(record) 
File "/usr/lib/python2.7/logging/__init__.py", line 749, in handle 
    self.emit(record) 
File "/home/ubuntu/.virtualenvs/api/local/lib/python2.7/site-packages/django/utils/log.py", line 117, in emit 
    self.send_mail(subject, message, fail_silently=True, html_message=html_message) 
File "/home/ubuntu/.virtualenvs/api/local/lib/python2.7/site-packages/django/utils/log.py", line 120, in send_mail 
    mail.mail_admins(subject, message, *args, connection=self.connection(), **kwargs) 
File "/home/ubuntu/.virtualenvs/api/local/lib/python2.7/site-packages/django/core/mail/__init__.py", line 97, in mail_admins 
    mail.send(fail_silently=fail_silently) 
File "/home/ubuntu/.virtualenvs/api/local/lib/python2.7/site-packages/django/core/mail/message.py", line 292, in send 
    return self.get_connection(fail_silently).send_messages([self]) 
File "/home/ubuntu/.virtualenvs/api/local/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 100, in send_messages 
    new_conn_created = self.open() 
File "/home/ubuntu/.virtualenvs/api/local/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 58, in open 
    self.connection = connection_class(self.host, self.port, **connection_params) 
File "/usr/lib/python2.7/smtplib.py", line 256, in __init__ 
    (code, msg) = self.connect(host, port) 
File "/usr/lib/python2.7/smtplib.py", line 316, in connect 
    self.sock = self._get_socket(host, port, self.timeout) 
File "/usr/lib/python2.7/smtplib.py", line 291, in _get_socket 
    return socket.create_connection((host, port), timeout) 
File "/usr/lib/python2.7/socket.py", line 571, in create_connection 
    raise err 
error: [Errno 111] Connection refused 

Это выглядит для меня быть ошибка, когда метод mail_admins называется. Я могу опубликовать содержимое wsgi.py или других файлов, если это необходимо. В моем приложении нет явного использования электронной почты, поэтому я не уверен, как это происходит. Есть идеи? Благодарю.

ответ

1

В Django есть специальный регистратор для отправки электронной почты администраторам при возникновении 500 ошибок. Отъезд https://docs.djangoproject.com/en/1.9/topics/logging/#django.utils.log.AdminEmailHandler для получения дополнительной информации.

Кажется, что выбрано исключение, и django пытается его распространять, отправив вам электронное письмо, но письмо не может быть отправлено, чтобы вы получили другое исключение! Вероятно, причиной настоящего исключения является исключение, вызванное невозможностью отправить электронное письмо. Тем не менее, я предлагаю исправить вашу конфигурацию электронной почты, чтобы django мог отправлять вам эти письма при возникновении 500-ошибок, это хорошая функция (и первый шаг к полному отслеживателю исключений, например Sentry). Если по каким-то причинам вы не можете отправлять сообщения электронной почты с этого сервера, то я рекомендую, по крайней мере, чтобы настроить свой адрес электронной бэкенд (https://docs.djangoproject.com/en/1.9/topics/email/#email-backends) в любой консоли (EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend') или файл

 
EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend' 
EMAIL_FILE_PATH = '/tmp/app-messages' # change this to a proper location 

так, что почта бэкенд будет работать.

+0

Спасибо! Проблема была неправильным адресом электронной почты в файле 'settings.py'. Значение по умолчанию было 'webmaster @ localhost', но, видимо, ubuntu обозначает это как« подозрительный »адрес, поэтому мне пришлось его модифицировать. @Serafeim – user2740614

Смежные вопросы