select * from pg_stat_activity;
の出力を見ると、説明されているapplication_name
という列があり、 ここに記載されています 。
Psqlがこの値を正しく(psql
...に)設定しているのを確認しましたが、アプリケーションコード(psycopg2/SQLAlchemy)は空白のままにします。
これをweb.1
、web.2
などの便利なものに設定したいので、後でpg_stat_activity
に表示される内容とアプリケーションログに表示される内容を関連付けることができます。
私はSQLAlchemyを使用してこのフィールドを設定する方法を見つけることができませんでした(そして、Pushが突き出た場合-生のSQLでも-HerokuでPostgresSQL 9.1.7を使用しています)。
明らかなものがないのですか?
これに対する答えは次の組み合わせです。
http://initd.org/psycopg/docs/module.html#psycopg2.connect
クライアントライブラリ/サーバーでサポートされている他の接続パラメーターは、接続文字列またはキーワードとして渡すことができます。 PostgreSQLのドキュメントには サポートされているパラメーター の完全なリストが含まれています。また、環境変数を使用して同じパラメーターをクライアントライブラリに渡すこともできます。
必要な変数は次のとおりです。
http://www.postgresql.org/docs/current/static/runtime-config-logging.html#GUC-APPLICATION-NAME
Application_nameは、NAMEDATALEN文字(標準ビルドでは64文字)未満の任意の文字列にすることができます。通常、サーバーへの接続時にアプリケーションによって設定されます。名前はpg_stat_activityビューに表示され、CSVログエントリに含まれます。また、log_line_prefixパラメータを介して通常のログエントリに含めることもできます。 application_name値では、印刷可能なASCII文字のみを使用できます。他の文字は疑問符(?)に置き換えられます。
と組み合わせ :
http://docs.sqlalchemy.org/en/rel_0_8/core/engines.html#custom-dbapi-args
文字列ベースの引数は、クエリ引数としてURL文字列から直接渡すことができます:(例...)create_engine()は、connect()に渡される追加の辞書である引数connect_argsも受け取ります。これは、文字列以外の型の引数が必要で、SQLAlchemyのデータベースコネクタにそのパラメーターの型変換ロジックがない場合に使用できます。
それから私たちは得る:
e = create_engine("postgresql://scott:tiger@localhost/test?application_name=myapp")
または:
e = create_engine("postgresql://scott:tiger@localhost/test",
connect_args={"application_name":"myapp"})