我在Google App Engine应用程序上有一个Django应用程序,该应用程序使用App Engine身份验证连接到Google Cloud SQL 。
在大多数情况下,一切正常,但有时会引发以下异常:
OperationalError: (2013, "Lost connection to MySQL server at 'reading initial communication packet', system error: 38")
根据docs,在以下情况下会返回此错误:
例如,如果Google Cloud SQL拒绝连接,因为您的客户端连接的IP地址未经授权。
就我而言,这没有多大意义,因为身份验证是由App Engine服务器完成的。
是什么导致这些零星的错误?
我遇到了类似的问题,最终联系Google寻求帮助。他们解释说,当需要重新启动或移动实例时会发生这种情况。如果客户端实例重新启动或被移动到另一台主机服务器(用于各种版本),则IP将不匹配并抛出该错误。他们提到服务器可能会因出现补丁,错误和运行缓慢而重启,从而导致类似的行为(相同或相似的错误)。服务器还尝试并靠近实例以增加响应时间。如果您在移动过程中发送请求,则会引发错误。
他们告诉我,如果发生这种情况,我需要对重试捕获进行编码,类似于处理数据存储超时的方式。记住要建立后退机制,重新启动后发送太多请求太快可能会导致崩溃。
这种情况多久发生一次?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句