如何修复 Google App Engine dev_appserver.py:watcher_ignore_re 标志“不是 JSON 可序列化”错误? [复制]
Posted
技术标签:
【中文标题】如何修复 Google App Engine dev_appserver.py:watcher_ignore_re 标志“不是 JSON 可序列化”错误? [复制]【英文标题】:How can I fix Google App Engine dev_appserver.py: watcher_ignore_re flag "is not JSON serializable" error? [duplicate] 【发布时间】:2021-12-17 01:57:36 【问题描述】:我想首先指出我尝试了所有答案mentioned in this thread。这些似乎都不能解决问题,而且这个问题已经有一段时间了。
问题
我想运行 dev_appserver.py,同时将某些文件添加到观察者的忽略列表中;这意味着 skip_files 是不可能的,因为此选项将它们从服务器读取中删除。
当我在没有 --watcher_ignore_re 标志的情况下运行 dev_appserver.py 时,除了文件监视之外,一切正常。当我使用标志运行它时,我收到以下错误:
INFO 2021-11-02 13:54:50,100 devappserver2.py:309] Skipping SDK update check.
Traceback (most recent call last):
File "/home/USERNAME/google-cloud-sdk/platform/google_appengine/dev_appserver.py", line 109, in <module>
_run_file(__file__, globals())
File "/home/USERNAME/google-cloud-sdk/platform/google_appengine/dev_appserver.py", line 103, in _run_file
_execfile(_PATHS.script_file(script_name), globals_)
File "/home/USERNAME/google-cloud-sdk/platform/google_appengine/dev_appserver.py", line 83, in _execfile
execfile(fn, scope)
File "/home/USERNAME/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 635, in <module>
main()
File "/home/USERNAME/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 623, in main
dev_server.start(options)
File "/home/USERNAME/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 356, in start
java_major_version=self.java_major_version
File "/home/USERNAME/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/metrics.py", line 185, in Start
self._cmd_args = json.dumps(vars(cmd_args)) if cmd_args else None
File "/usr/lib/python2.7/json/__init__.py", line 244, in dumps
return _default_encoder.encode(obj)
File "/usr/lib/python2.7/json/encoder.py", line 207, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/lib/python2.7/json/encoder.py", line 270, in iterencode
return _iterencode(o, 0)
File "/usr/lib/python2.7/json/encoder.py", line 184, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <_sre.SRE_Pattern object at 0x7f720c625240> is not JSON serializable
我试过不同的版本都没有成功:
GCloud 361.0.0/362.0.0/357.0.0/240.0.0/220.0.0/200.0.0 Python 2.7.18/3.9.7我还在观察者标志上尝试了不同的字符串值:
"" '' “.css” “*.css” ".*\css" '.css' '*.css' '.*\css' 等我知道问题不在于字符串是如何制定的(至少看起来不像)。而且不同的版本也无济于事。
我的同事没有这个问题,并且在 MacOS 上使用我在此处列出的不同版本。我目前使用的是 Arch Linux,但我的 Mac 上也遇到了完全相同的问题。
我还在我的~/.zshrc
文件中添加了export CLOUDSDK_PYTHON=python2.7
。
【问题讨论】:
【参考方案1】:事实证明,这毕竟是重复的。我错过了一条有解决方案的评论。这个:https://***.com/a/52238832/9706597
It looks like it is an issue with the google analytics code built into dev_appserver2 (google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\devappserver2.py on or around line 316). It wants to send all of your command line options to google analytics. If you remove the analytics client id by adding the command line option --google_analytics_client_id= (note: '=' without any following value) the appserver won't call the google analytics code where it is trying to JSON serialize an SRE object and failing.
简单地说,对于其他人来说,只需添加此选项,只需添加此选项:
--google_analytics_client_id=
没有价值。
【讨论】:
以上是关于如何修复 Google App Engine dev_appserver.py:watcher_ignore_re 标志“不是 JSON 可序列化”错误? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在Google App Engine上防止“ImportError:没有名为oauth2client.client的模块”?
有没有支持 JDBC 的 Google App Engine 的替代品? [关闭]
如何在 Google Cloud App Engine 上使用 PubSub 创建订阅者,该订阅者通过 Publisher 从 Google Cloud App Engine Flex 收听消息?
如何在 Google App Engine app.yaml 中处理尾部斜线
使用 grpc 和 cloud-datastore 时如何修复 App Engine Flex 中的 AttributeError?