AppEngine要监视的目录太多

时间:2014-07-03 10:54:50

标签: google-app-engine

当我运行goapp服务时,我收到了这个警告。

  

警告2014-07-03 10:39:40,724 inotify_file_watcher.py:143]您的应用程序中有太多目录需要监视所有目录中的更改。您可能必须重新启动开发服务器才能看到对文件的某些更改

原因可能是因为npm_modules文件夹。我尝试在app.yaml中使用skip_files解决它,但警告仍然存在。

skip_files:
- ^(.*/)?.*/node_modules/.*$
- ^(.*/)?#.*#$
- ^(.*/)?.*~$
- ^(.*/)?.*\.py[co]$
- ^(.*/)?.*/RCS/.*$
- ^(.*/)?\..*$

我该怎么办?

6 个答案:

答案 0 :(得分:1)

我通过编辑位于go_appengine / google / appengine / tools / devappserver2的watcher_common.py中的一行来解决此问题。

_IGONERD_DIRS = ('.git', '.hg', '.svn', 'node_modules')

答案 1 :(得分:1)

对于撰写此答案时的最新SDK 1.9.51,我刚刚将node_modules添加到_IGNORED_PREFIX变量。

_IGNORED_PREFIX = ('.', 'node_modules')

答案 2 :(得分:0)

更改此变量的数量_MAX_MONITORED_FILES解决了我的问题。我知道这不是最好的选择,但它有效。设置为10000,我已经改为50000

答案 3 :(得分:0)

在我的情况下unset我的GOPATH解决了这个问题。我正在使用一个全球的,有很多东西。

$ unset GOPATH
$ gcloud --version
Google Cloud SDK 148.0.0
app-engine-go 
app-engine-go-darwin-x86_64 1.9.50
app-engine-python 1.9.50

另请参阅the related post on The Go Blog

  

直到最近,App Engine SDK中的工具还没有意识到   工作区。没有工作空间,"去得到"命令无法运行,   所以应用程序作者必须安装和更新他们的应用程序依赖项   手动。这是一种痛苦。

     

App Engine SDK的1.7.4版本已经改变了。该   dev_appserver和appcfg工具现在可以识别工作区。跑步时   在本地或上传应用程序,这些工具现在搜索依赖项   在GOPATH环境变量指定的工作空间中。

答案 4 :(得分:0)

在Linux中,在启动服务器之前运行以下内容:

sudo sysctl fs.inotify.max_user_watches=16000

按顺序找出适合您情况的大致正确的号码,然后转到您的应用目录并运行:

find -L . | wc -l

查看您拥有的文件数量。使用略高于命令回波的数字。

注意1:您可以通过运行以下命令查看原始值,以查看操作系统中的默认值

cat /proc/sys/fs/inotify/max_user_watches

在我的系统中,默认值为8,192

注意2:每次重新启动时,此更改都会消失,有一种方法可以使其永久化,只需在网络上搜索“max_user_watches”。

答案 5 :(得分:0)

在运行Google Cloud SDK 247.0.0的Mac OS 10.14.5上,app.yaml中的skip_files变量对此无效。在不更改GAE代码的情况下,唯一对我有用的方法是将watcher_ignore_re设置为忽略node_modules文件夹:

dev_appserver.py --google_analytics_client_id= --watcher_ignore_re=".*node_modules.*" ...

--google_analytics_client_id=参数是必需的,否则将报告here报错,指出watcher_ignore_re中的正则表达式不是JSON可序列化的