2017年10月20日金曜日

GAE/Py 開発サーバで too many directories エラー発生

日本語の情報が見つからなかったので、自分用のメモです。

開発中は、サーバがファイルの更新を監視しています。
これによって、サーバの再起動が不要になる、すぐれ機能です。

でも、ファイル数の上限は10000で、これを越えると、
There are too many directories in your application for changes in all of them to be monitored. You may have to restart the development server to see some changes to your files.
とエラーが出て、ファイルの更新を検知できなくなります。

/lib に Flaskとか、イロイロ入れてるので、10000越えてるのかなぁ??

ググってみると、こんな記事が見つかりました。
https://stackoverflow.com/questions/24551795/appengine-too-many-directory-to-be-monitored

どうやら、 watcher_common.py が怪しいみたい。

で、
def skip_ignored_dirs(dirpath, dirnames, skip_files_re=None):
に、
dirpath = '/lib'
を追加し、サーバを再起動すると見事に監視が始まりました。
これで解決!!

でも、SDKのアップデートがあると、再設定が必要なんだろうな...。(^^;;


-- 2017/12/26 追記 --

再発...

結論は、開発環境の場所が悪かったようです。

旧: /home/<USER>/Downloads/d/GCP
新: /home/<USER>/GCP

そもそも、何故 Downloads の下に置いてたかと言うと、このフォルダだけは、ChromeOS と Ubuntu の両方からアクセスできるから。
これが、なかなか便利なのです。

多分こんな使い方は、Chromebook に Ubuntu 入れてる場合しか無いと思う。
なので、ネット調べてもヒットしないんだよね。

これが分かるまで、とにかく何をやってもダメで、ほとんど詰んでました。

最初は、watcher_common.py をイジイジしてたけど、全くダメ。
あきらめて、Ubuntu を再インストールしたけど、これもダメ。
その他、SDKの再インストールとか、開発環境に置いてるプログラムファイルを消して app.yaml だけにしてみたりと..
イロイロなことを試してみましたが、どれもダメ。

ではと、ChromeOS から再インストール(リカバリ)してみて、やっと Downloads に入れてたのが原因だと気づきました。遅っ;;
分かってしまえば何てこと無いんだけど、久しぶりにハマりましたね。

でも、イロイロ調べてる内に、SDKのインストールに3種類の方法があるとか、新しい発見もあり、これはこれで良かったかも。

以下、Ubuntu のセットアップから、開発環境の整備までの手順(メモ)です。

[Add Package]
$ nano setup.sh
--
#!/bin/sh

apt update

## Input Method
apt -y install fonts-takao ibus-anthy

## Aplication
apt -y install python-dev python-pip \
software-center synaptic gparted thunar-archive-plugin \
transmission firefox geany curl git

apt -y autoremove
--
$ sudo sh setup.sh

[SDK] https://cloud.google.com/sdk/downloads?hl=ja#versioned
$ export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
$ echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
$ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
$ sudo apt-get update && sudo apt-get install google-cloud-sdk google-cloud-sdk-app-engine-python
$ gcloud init

[Structure]
/home/<USER>/GCP
 -venv/
 -<APP>/
  -project/
   -lib/
   -app.yaml
   -main.py

[MkDir & Venv]
$ sudo pip install virtualenv pycodestyle
$ cd
$ mkdir -p GCP/<APP>/project/lib
$ cd ~/GCP
$ virtualenv --no-site-package venv
$ source ./venv/bin/activate
V pip install pillow
V cd project
V pip install -t lib flask flask-wtf markdown
V deactivate
$

[Run]
$ cd ~/GCP && source ./venv/bin/activate && cd <APP>/project
V dev_appserver.py app.yaml backend.yaml
  => http://localhost:8000
     http://localhost:8080/_ah/stats/
V deactivate
$ pycodestyle main.py > pycodestyle.txt

[Deploy]
$ gcloud app deploy --project <APP> -v <N> app.yaml backend.yaml queue.yaml cron.yaml

0 件のコメント:

コメントを投稿