私は web.py ( mongsの書き換え/拡張) で web-app を作成しています。これは、スタンドアロンアプリケーションとしても、リクエストを転送できるサブアプリとしても機能させたいと考えています。私が抱えている問題は、サブアプリとして使用すると、静的ファイルを独自の静的ディレクトリから簡単に提供できないことです。これを配布するつもりなので (ユーザーがファイルをプロジェクトの静的ディレクトリに結合する必要はありません)、ディレクトリ構造を次のようにします。
app_that_is_using_mongs (not mine)
static (which holds the app's static files - also not mine)
mongs (my subapp)
main.py (the code for mongs)
view (holds templates)
static (the static folder for mongs)
main.py (the code for the app that is using mongs)
...mongsディレクトリ全体が、それを使用しているアプリから分離されるようにします。
これを機能させるためのいくつかの可能性を検討しました。
次のように、静的ディレクトリからファイルを読み取って出力する要求ハンドラーを使用します。
cwd = os.path.dirname(__file__) + '/' # get current working directory class Static: def GET(self, filename): """searches for and returns a requested static file or 404s out""" try: return open(cwd + 'static/' + filename, 'r').read() except: web.application.notfound(app) # file not found
大きなファイルに対するこのソリューションのパフォーマンスについてはよくわかりませんが、これは web.py が独自に実行できるものであるように思われます。
web.pyを介してcherry.py staticdirツールにアクセスして、別の静的ディレクトリを追加します...このようなことを行う方法がわかりません(web.pyが実行されているサーバーと直接やり取りする)、私は知りませんGunicornサーバー(またはcherry.py以外のサーバー)に切り替えても、まだ機能すると思います。
web.py が静的ファイルを処理する方法を修正して、拡張性を高めます...他に方法がない場合は、web.py のこの部分を書き換えて、メイン リポジトリにプッシュすることがおそらく最善の方法です。
それで、これを行う最善の方法は何ですか?