Google App Engine dev_appserver.py:watcher_ignore_re 标志 "is not JSON serializable"
Google App Engine dev_appserver.py: watcher_ignore_re flag "is not JSON serializable"
为什么我 运行 带有选项 watcher_ignore_re
的 dev_appserver.py
,我收到正则表达式 is not JSON serializable
的错误消息。
这是开发服务器的错误吗?我是否错误地使用了这个命令?命令和调用堆栈打印如下。
C:\Users\mes65\Documents\MyProject>"C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin\dev_appserver.py" ^
--watcher_ignore_re="(.*\.git|.*\.idea|tmp\.py)" ^
"C:\Users\mes65\Documents\MyProject"
WARNING 2018-06-06 09:28:59,161 appinfo.py:1622] lxml version "2.3" is deprecated, use one of: "3.7.3"
INFO 2018-06-06 09:28:59,187 devappserver2.py:120] Skipping SDK update check.
Traceback (most recent call last):
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\dev_appserver.py", line 96, in <module>
_run_file(__file__, globals())
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\dev_appserver.py", line 90, in _run_file
execfile(_PATHS.script_file(script_name), globals_)
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\devappserver2.py", line 454, in <module>
main()
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\devappserver2.py", line 442, in main
dev_server.start(options)
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\devappserver2.py", line 163, in start
bool(ssl_certificate_paths), options)
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\metrics.py", line 166, in Start
self._cmd_args = json.dumps(vars(cmd_args)) if cmd_args else None
File "C:\Python27\lib\json\__init__.py", line 244, in dumps
return _default_encoder.encode(obj)
File "C:\Python27\lib\json\encoder.py", line 207, in encode
chunks = self.iterencode(o, _one_shot=True)
File "C:\Python27\lib\json\encoder.py", line 270, in iterencode
return _iterencode(o, 0)
File "C:\Python27\lib\json\encoder.py", line 184, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <_sre.SRE_Pattern object at 0x00000000063C2188> is not JSON serializable
看起来这是 dev_appserver2 中内置的 google 分析代码的问题(google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\devappserver2.py 在第 316 行或附近)。它想将您所有的命令行选项发送到 google 分析。如果您通过添加命令行选项 --google_analytics_client_id=(注意:'=' 没有任何后续值)删除分析客户端 ID,应用服务器将不会在它尝试 google 的地方调用分析代码 JSON 序列化 SRE 对象并失败。但是,由于您使用的是 Windows,我发现即使您解决了这个问题,--watcher_ignore_re 仍然无法正常工作。
file_watcher.py
中有评论
待办事项:b/33178251 - 添加 watcher_ignore_re 对 windows 的支持。
我在 Windows 上也遇到了这个可用性问题,真的很失望。我试图找到一些解决方法,但我没有找到任何合适的方法。
最后,我决定自己实现对 Windows 的支持 watcher_ignore_re。我在 my Github repo
中进行了必要的更改
如果用几个词来描述它们:
- 添加
_watcher_ignore_re
、_skip_files_re
属性及其设置器
- 添加导入语句
from google.appengine.tools.devappserver2 import watcher_common
并在新创建的def _path_ginored
中使用它
- 在将它们添加到观察者更改的文件之前过滤
additional_changes
为了解决上述不可序列化正则表达式属性的问题,我们应该将它们从序列化字典中删除。此问题的修复已作为后续提交添加,可以在 metrics.py:185-193
.
进行检查
我希望它能帮助其他人在 Windows 上享受在 GAE 上的开发:)
为什么我 运行 带有选项 watcher_ignore_re
的 dev_appserver.py
,我收到正则表达式 is not JSON serializable
的错误消息。
这是开发服务器的错误吗?我是否错误地使用了这个命令?命令和调用堆栈打印如下。
C:\Users\mes65\Documents\MyProject>"C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin\dev_appserver.py" ^
--watcher_ignore_re="(.*\.git|.*\.idea|tmp\.py)" ^
"C:\Users\mes65\Documents\MyProject"
WARNING 2018-06-06 09:28:59,161 appinfo.py:1622] lxml version "2.3" is deprecated, use one of: "3.7.3"
INFO 2018-06-06 09:28:59,187 devappserver2.py:120] Skipping SDK update check.
Traceback (most recent call last):
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\dev_appserver.py", line 96, in <module>
_run_file(__file__, globals())
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\dev_appserver.py", line 90, in _run_file
execfile(_PATHS.script_file(script_name), globals_)
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\devappserver2.py", line 454, in <module>
main()
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\devappserver2.py", line 442, in main
dev_server.start(options)
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\devappserver2.py", line 163, in start
bool(ssl_certificate_paths), options)
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\metrics.py", line 166, in Start
self._cmd_args = json.dumps(vars(cmd_args)) if cmd_args else None
File "C:\Python27\lib\json\__init__.py", line 244, in dumps
return _default_encoder.encode(obj)
File "C:\Python27\lib\json\encoder.py", line 207, in encode
chunks = self.iterencode(o, _one_shot=True)
File "C:\Python27\lib\json\encoder.py", line 270, in iterencode
return _iterencode(o, 0)
File "C:\Python27\lib\json\encoder.py", line 184, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <_sre.SRE_Pattern object at 0x00000000063C2188> is not JSON serializable
看起来这是 dev_appserver2 中内置的 google 分析代码的问题(google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\devappserver2.py 在第 316 行或附近)。它想将您所有的命令行选项发送到 google 分析。如果您通过添加命令行选项 --google_analytics_client_id=(注意:'=' 没有任何后续值)删除分析客户端 ID,应用服务器将不会在它尝试 google 的地方调用分析代码 JSON 序列化 SRE 对象并失败。但是,由于您使用的是 Windows,我发现即使您解决了这个问题,--watcher_ignore_re 仍然无法正常工作。
file_watcher.py
中有评论待办事项:b/33178251 - 添加 watcher_ignore_re 对 windows 的支持。
我在 Windows 上也遇到了这个可用性问题,真的很失望。我试图找到一些解决方法,但我没有找到任何合适的方法。
最后,我决定自己实现对 Windows 的支持 watcher_ignore_re。我在 my Github repo
中进行了必要的更改如果用几个词来描述它们:
- 添加
_watcher_ignore_re
、_skip_files_re
属性及其设置器 - 添加导入语句
from google.appengine.tools.devappserver2 import watcher_common
并在新创建的def _path_ginored
中使用它
- 在将它们添加到观察者更改的文件之前过滤
additional_changes
为了解决上述不可序列化正则表达式属性的问题,我们应该将它们从序列化字典中删除。此问题的修复已作为后续提交添加,可以在 metrics.py:185-193
.
我希望它能帮助其他人在 Windows 上享受在 GAE 上的开发:)