2

これは、たとえばMongoEngineが行うことのようです。目標は、コンテキストを明示的に渡すことなく、モデルファイルがデータベースにアクセスできるようにすることです。

4

1 に答える 1

2

ピラミッドは関係ありません。グローバルは、アプリケーションにサービスを提供するために WSGI サーバーが使用しているメカニズムを処理する必要があります。

たとえば、ほとんどのサーバーはリクエストごとに個別のスレッドを使用するため、グローバル変数はスレッドセーフである必要があります。gunicorn と gevent は greenlets を使用して提供されますが、これは別のメカニズムです。

多くのエンジン/ORM がスレッドローカル接続をサポートしています。これにより、あたかもグローバル変数であるかのように接続にアクセスできますが、それは各スレッドで異なる変数です。その接続が同じスレッドの次の要求に波及しないように、要求が完了したら必ず接続を閉じる必要があります。これは、Pyramid トゥイーンまたはクックブックに示されている他のいくつかのパターンを使用して簡単に実行できます。

于 2012-06-06T01:32:47.043 に答える