flask缓存memcache连接自动重新连接

flask缓存memcache连接自动重新连接,flask,memcached,flask-cache,Flask,Memcached,Flask Cache,我最近将memcache服务器移动到AWS中的弹性负载平衡器后面。我还将Flask缓存与这个memcache一起使用。如果我没有弄错(我完全有可能弄错),Flask Cache会打开一个到memcache的连接并保持打开状态。另外,ELB似乎在一段时间后(我认为大约需要60分钟)终止了这些长期存在的连接。这将导致以下错误: SomeErrors:flush_all:(0x4ff96f0)连接失败的错误19,::rec()返回零,服务器已断开连接 如果有什么方法可以捕捉到这些错误并重新连接(或者设

我最近将memcache服务器移动到AWS中的弹性负载平衡器后面。我还将Flask缓存与这个memcache一起使用。如果我没有弄错(我完全有可能弄错),Flask Cache会打开一个到memcache的连接并保持打开状态。另外,ELB似乎在一段时间后(我认为大约需要60分钟)终止了这些长期存在的连接。这将导致以下错误:

SomeErrors:flush_all:(0x4ff96f0)连接失败的错误19,::rec()返回零,服务器已断开连接

如果有什么方法可以捕捉到这些错误并重新连接(或者设置为“连接失败时尝试重新连接”),这将解决这个问题

FWIW,我正在使用
pylibmc
,但没有看到任何明显的(对我来说)我可以通过的东西


任何帮助都将不胜感激

与ELB断开连接非常常见,也很难调试。以下几点可能会有所帮助:

调试思路

  • 尝试在只有一个代理的临时环境中调试问题 实例已连接到ELB
  • 确保您有带有时间戳的应用程序日志记录,并且如果您捕获了Python中的所有异常(这通常不是一个好主意),那么您就要记录异常。如果捕获到所有异常,则可能存在一个隐蔽的bug,它看起来是其他的

  • 模拟故障(即手动从ELB中删除“一个”实例),现在查看日志并确保在日志中看到这一点。如果你能重现同样的行为,那么你就可以找到解决方法

  • 研究web服务自动化测试工具,如。这对于模拟出现断开时的条件非常有帮助

  • 使用不同的负载平衡器(即HAProxy)尝试相同的应用程序(我可能会在最后尝试)


嗨,诺亚,非常感谢你的回答。我很确定我在ELB断开了连接,我希望在
pylibmc
或甚至redis中有一些咒语或设置,以便在长时间运行的连接保持打开时自动重新连接错误。不过,如果我需要做更深入的调查,我会仔细考虑你的建议。再次感谢!另一件要尝试的事情是改变过程: