dev_appserver.py 起動時に、ファイルが多すぎる旨の UserWarning が出る場合の対処法【追記あり】
dev_appserver.py
というのは、GAE(Google App Engine)のローカル開発用サーバーを起動するためのスクリプト。ちなみに Google の公式ドキュメント には、
Cloud SDK と Python 2 用 App Engine SDK には、本番環境の App Engine で動作するアプリケーションをシミュレートするために、ローカルで実行できるローカル開発用サーバー( dev_appserver.py )が同梱されています。
と書かれているので、ローカル開発サーバ自身を表わす名称としても使われているようだ。そういえば「dev_appserver.py を起動する」とも言いますね(あ、この記事のタイトルにも書いてた)。
筆者の場合、件の UserWarning は node_modules
フォルダが原因だった。そして、特定のファイルやフォルダをウォッチ対象から除外するには、watcher_common.py
(ファイルパスはお使いの環境によって変わります)を編集する、というのが今回のツイートの趣旨。
ところが、である。じつは後で知ったのだが、dev_appserver.py
起動時のオプションに --watcher_ignore_re
というそれっぽい指定ができるものを見つけた。
たとえば今回のように node_modules
フォルダを除外したいなら、
dev_appserver.py . --watcher_ignore_re=.*/node_modules/.*
と指定すればオーケー。--watcher_ignore_re
の re の部分が Python の正規表現操作モジュールである「re」を彷彿とさせるので、この例のように正規表現で指定するのが正しいと思う(少なくとも筆者の環境ではこれで解決した)。
こちらのほうが gcloud components のアップデートのたびに当該箇所を書き換えなくても済むぶん、スマートな解決法と言えるかもね。
2020/04/09 追記
dev_appserver.py
起動時のオプションに --watcher_ignore_re
を付ける件、ある日 Google Cloud SDK をアップデートしたところ、妙なエラーが出るようになった。
TypeError: <_sre.SRE_Pattern object at 0x104f897a0> is not JSON serializable
仕方なくまた watcher_common.py
を適宜書き換える方法に戻していたのだが、その後、Stack Overflow にて 以下のコメント を発見した。
The --google_analytics_client_id= argument is necessary, otherwise it will throw an error saying the regular expression in watcher_ignore_re is not JSON serializable, as reported here
つまり、dev_appserver.py
の起動時に(さらに) --google_analytics_client_id
というオプションが必要だということ。しかも値は未指定のまま。なんだか釈然としないが、試したところエラーは解決して元どおりになったのでよしとしよう。
dev_appserver.py . --google_analytics_client_id= --watcher_ignore_re=".*/node_modules/.*"
あ、クオートは不要かもしれないけど、一応。