3

ユーザーがリクエストを作成する前にCherryPy構成ファイルにアクセスする必要があるCherryPyで実行されているWebアプリがあります。ドキュメントは使用すると言っています:

host = Cherrypy.request.app.config ['database'] ['host']

しかし、それはユーザーの要求以外では機能しません。次のようにアプリを起動するときに、アプリケーションオブジェクトを使用することもできます。

...
アプリケーション=cherrypy.tree.mount(root、'/'、app_conf)
host = application.config ['database'] ['host']
.. ..

しかし、ユーザーリクエスト以外のクラスから「アプリケーション」にアクセスする方法がわかりません。

私たちのアプリはいくつかのデータベースを調べ、ユーザーの要求ではなくアプリの起動時にそれらを設定するので、私は尋ねます。これは他の場所でも役立つと思います。では、「アプリケーション」への参照をどこかに保存したり、CherryPy APIを介してアクセスしたりする方法はありますか?

4

2 に答える 2

2

スクリプト名(末尾のスラッシュを除く)を使用して、同じcherrypy.treeオブジェクトを介してアクセスできます。

application = cherrypy.tree.apps['']
host = application.config['database']['host']

ただし、他の回答でほのめかされているように、コードを構造化するためのより良い方法がある可能性があります。

于 2011-06-28T16:15:49.367 に答える
0

「アプリケーション」への参照をどこかに保存する方法はありますか...

通常の Python を使用するだけです。「myapp」というパッケージの場合:

# __init__.py
...
application = cherrypy.tree.mount(root, '/', app_conf)
...

# notarequest.py
import myapp
host = myapp.application.config['database']['host']

ただし、構成を使用してデータベース オブジェクトをセットアップし、構成を検査する代わりにそれらのデータベース オブジェクトを検査することをお勧めします。

于 2010-05-28T18:13:07.117 に答える