GNU mailman から django データベースにクエリを実行する python 関数を呼び出そうとしています。
mailman がメッセージを配信しようとすると、Python スクリプトがインポートされます。後でスクリプト内の関数を呼び出して、メッセージ オブジェクトを変更します。私が得ているエラーは次のとおりです。
ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation \
for more details.
ファイルの一番上で、設定を構成する方法は次のとおりです。
from django.core.management import setup_environ
from mysite import settings
setup_environ(settings)
python manage.py syncdb を実行すると、データベースが正常に作成されたようです。これが私のデータベース構成です:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'django_db', # Or path to database file if using sqlite3.
'USER': 'root', # Not used with sqlite3.
'PASSWORD': 'root', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
さらに、次のように関数全体をコメントアウトしました。
def f():
return
したがって、これは関数呼び出しとは関係ないと思います。
さらに、python コンソールで setup_environ 行をテストしたところ、すべてが期待どおりに機能しました。
さらに、GNU mailman を再起動すると、すべてのスクリプトをロードする必要があると思います。つまり、ファイルをインポートする必要があります。これは、mailman を再起動すると、これらの「setup_environ」行が実行されることを意味します。それで問題ありません。エラーは発生しません。
問題があるのは、GNU mailman がメッセージを配信しようとするときだけです。
だから私はかなり困惑しています。追加の PYTHONPATH および DJANGO_SETTINGS_MODULE 環境変数を使用してmailman restart コマンドを sudo として実行しますが、関連する部分を sys.path および os.environ dict に手動で追加しましたが、これでも問題は解決しません。さらに、このエラーは、パスに問題があることや、設定モジュールが見つからないことを示しているわけではありません。
完全なスタック トレースは次のとおりです。
Jun 04 12:06:11 2012 (5249) Uncaught runner exception: settings.DATABASES is improperly configured. Please supply the ENGINE val\
ue. Check settings documentation for more details.
Jun 04 12:06:11 2012 (5249) Traceback (most recent call last):
File "/var/lib/mailman/Mailman/Queue/Runner.py", line 100, in _oneloop
msg, msgdata = self._switchboard.dequeue(filebase)
File "/var/lib/mailman/Mailman/Queue/Switchboard.py", line 173, in dequeue
redirect_list(msg, data)
File "/home/ubuntu/djcode/mysite/mysite/apps/mailman/redirect.py", line 32, in redirect_list
File "/home/ubuntu/djcode/mysite/mysite/apps/mailman/redirect.py", line 45, in _get_real_listname
from mysite.apps.common.models import CustomUser
File "/home/ubuntu/djcode/mysite/mysite/apps/common/custom_user_manager.py", line 54, in get
email_object = Email.objects.get(email=kwargs['email'])
File "/usr/local/lib/python2.6/dist-packages/django/db/models/manager.py", line 131, in get
return self.get_query_set().get(*args, **kwargs)
File "/usr/local/lib/python2.6/dist-packages/django/db/models/query.py", line 361, in get
num = len(clone)
File "/usr/local/lib/python2.6/dist-packages/django/db/models/query.py", line 85, in __len__
self._result_cache = list(self.iterator())
File "/usr/local/lib/python2.6/dist-packages/django/db/models/query.py", line 291, in iterator
for row in compiler.results_iter():
File "/usr/local/lib/python2.6/dist-packages/django/db/models/sql/compiler.py", line 763, in results_iter
for rows in self.execute_sql(MULTI):
File "/usr/local/lib/python2.6/dist-packages/django/db/models/sql/compiler.py", line 808, in execute_sql
sql, params = self.as_sql()
File "/usr/local/lib/python2.6/dist-packages/django/db/models/sql/compiler.py", line 71, in as_sql
out_cols = self.get_columns(with_col_aliases)
File "/usr/local/lib/python2.6/dist-packages/django/db/models/sql/compiler.py", line 218, in get_columns
col_aliases)
File "/usr/local/lib/python2.6/dist-packages/django/db/models/sql/compiler.py", line 306, in get_default_columns
r = '%s.%s' % (qn(alias), qn2(field.column))
File "/usr/local/lib/python2.6/dist-packages/django/db/models/sql/compiler.py", line 49, in quote_name_unless_alias
r = self.connection.ops.quote_name(name)
File "/usr/local/lib/python2.6/dist-packages/django/db/backends/dummy/base.py", line 15, in complain
raise ImproperlyConfigured("settings.DATABASES is improperly configured. "
ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation \
for more details.