标题几乎概括了这个问题。我有一个基于 django 的站点在多个服务器之间进行负载平衡。尽管所有服务器都应该相同,但 $#%& 会发生......如果 django 发送的错误电子邮件包含服务器的主机名,那将非常有用。这将如何实现?
ps 如果这有什么不同的话,那就是 python 2.7.2 上的 django 1.3。
更新:
我可以得到主机名,这不是问题。问题是如何将其添加到错误电子邮件中。
您可以使用SERVER_EMAIL
orEMAIL_SUBJECT_PREFIX
设置。
在您的 settings.py 中:
import socket
SERVER_ADMIN = 'alerts+{0}@mydomain.com'.format(socket.gethostname())
或者
import socket
EMAIL_SUBJECT_PREFIX = '[my_django_app - {0}] '.format(socket.gethostname())
如果您想要 httpd 服务器名称,您可以从请求中获取它。
site_name = request.META['SERVER_NAME']
这不一定是机器的主机名,但它是站点的 Apache/IIS 指令中的服务器名称别名。或者,如果您绝对需要服务器的机器名称:
import socket
host_name = socket.gethostname()
更新:
现在您有了特定服务器的主机名,您可以通过多种方式将其添加到错误电子邮件中。您可以编写自己的错误通知系统,或者正如@sdolan 提到的那样,您SERVER_ADMIN
可以EMAIL SUBJECT_PREFIX
更改settings.py
. 或者,您可以更改SERVER_EMAIL
指令。您可以使用"{0}".format(socket.gethostname())
语法,也可以使用字符串列表的字符串连接"".join(string_parts_list)
。
# settings.py
import socket
SERVER_EMAIL = "".join(['webmaster@', socket.gethostname(), '.com'])