mail_admins 导致 Django/Apache2 连接被拒绝?
mail_admins causing connection refused for Django/Apache2?
我是 运行 Django,在 Ubuntu 后端有一个 Apache2 服务器。在加载我的站点时,出现 500 内部服务器错误。 Apache 日志如下所示:
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
方法时出现的错误。如果需要,我可以 post wsgi.py
或其他文件的内容。我的应用程序不涉及明确的电子邮件使用,所以我不确定这是怎么发生的。有任何想法吗?谢谢。
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
以便邮件后端正常工作。
我是 运行 Django,在 Ubuntu 后端有一个 Apache2 服务器。在加载我的站点时,出现 500 内部服务器错误。 Apache 日志如下所示:
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
方法时出现的错误。如果需要,我可以 post wsgi.py
或其他文件的内容。我的应用程序不涉及明确的电子邮件使用,所以我不确定这是怎么发生的。有任何想法吗?谢谢。
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
以便邮件后端正常工作。