今、app.yamlについての質問が多くて、検索して探したのですが、これは見つけられませんでした。
TLDR : 最初に完全な回答をお読みください。これは標準の application_readable:true ではありません。 私は基本的に、異なるルートを介して同じファイルにアクセスしたい. /static/img/pic.jpg AND /img/pic.jpg
使用事例
私は( fsouzaの作業に基づいて)フラスコアプリケーションを構築し、 gaeで動作するフラスコのサムネイル拡張を構築しようとしています(これは読み取り専用FSであるため、フラスコサムネイルをフォークし、現在展開しようとしています。)
だから私は必要です:
- Python 経由で静的ファイルにアクセスできるので、その場で img を読み取ってサムネイルを作成できます。URLは例です。/STATIC/IMG/PIC.JPG
- app.yaml を介して他のイメージ、css、js を配信します。URLは例です。/IMG/PIC.JPG
機能していないもの:
ローカルで動作していますが、展開後は動作しません。app.yaml は dev_appserver.py によってそれほど厳密に強制されていないと思います。
このシナリオのいずれかを機能させることができます。これは私の app.yaml が現在どのように見えるかです:
builtins:
- appstats: on
- admin_redirect: on
- deferred: on
- remote_api: on
- url: /css
static_dir: application/static/css
- url: /js
static_dir: application/static/js
- url: /img
static_dir: application/static/img
- url: /static
static_dir: application/static
application_readable: true
- url: .*
script: run.application.app
代わりにこれも試しました:
- url: /css/(.*)
static_files: css/\1
upload: css/(.*)
- url: /js/(.*)
static_files: js/\1
upload: js/(.*)
- url: /img/(.*)
static_files: img/\1
upload: img/(.*)
特定の js,css,img をコメントアウトすると、アプリケーションは application/static/img の img にアクセスし、そこからサムネイルを作成できます。ただし、/img/dont.need.thumbnail.jpg などの URL は提供されません。
この部分にコメントすると:
- url: /static
static_dir: application/static
application_readable: true
img、css、js は、本来あるべきように提供されます。
誰でも私を助けることができますか?私が間違っていることは何ですか?
app.yaml の URL は再帰的ですか?
現在の回避策:
私の現在の回避策は、Python アプリケーションでいくつかの URL ルートを追加するだけです。しかし、それは効率的ではなく、より多くの CPU 時間を消費し、遅くなると思います。例えば
app.add_url_rule('/img/<path>', 'static_img_files', view_func=views.static_img_files)
def static_img_files(path):
return static_files("img/"+path)
ボーナスヒント:
git push-to-deploy だけの場合
application_readable: true
動作しないため、ローカルではなく gae サーバーでテストするとすぐに、python アプリケーションは静的イメージにアクセスできなくなります。アプリ エンジン ランチャーを介してデプロイする必要があります (これだけで、私は見つけるのに何年もかかりました)