3

タイトルはほとんど質問を要約しています。複数のサーバー間で負荷分散されたdjangoベースのサイトがあります。すべてのサーバーが同一である必要がある限り、$#%&が発生します...djangoが送信するエラーメールにサーバーのホスト名が含まれていると非常に便利です。これはどのように達成されますか?

psそれが何か違いを生むなら、それはpython2.7.2のdjango1.3です。

アップデート:

ホスト名を取得できますが、それは問題ではありません。問題は、それをエラーメールに追加する方法です。

4

3 に答える 3

8

SERVER_EMAILまたはEMAIL_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())
于 2012-04-03T21:33:55.510 に答える
-1

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'])
于 2012-04-03T20:09:18.857 に答える
-2

Python socket.gethostname()socket docs)は1つの方法です。

from socket import gethostname; print gethostname()

os.uname()os docs)からいくつかのパラメータを取得することもできます

import os; print os.uname()[1]

'ノード名'を取得します。

于 2012-04-03T20:02:20.747 に答える