flask-cache memcache连接自动重新连接

时间:2016-10-06 15:05:01

标签: flask memcached flask-cache

我最近将我的memcache服务器移到AWS的Elastic Load Balancer后面。我也在使用Flask-Cache和这个内存缓存。如果我没有弄错(并且我完全有可能),Flask-Cache会打开与memcache的连接并保持打开状态。似乎ELB在一段时间后终止了这些长期存在的联系(我认为它大约需要60分钟)。这将导致错误,如:

SomeErrors: error 19 from flush_all: (0x4ff96f0) CONNECTION FAILURE, ::rec() returned zero, server has disconnected

如果有某些方法我可以捕获这些错误并重新连接(或者某些魔术设置为"尝试重新连接连接失败"),这将解决此问题。

FWIW,我使用的是pylibmc,但是没有看到任何明显的(对我而言)我可以通过。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

与ELB断开连接很常见,也很难调试。以下是一些可能有用的内容:

调试想法

  • 尝试在只有一个的暂存环境中调试问题 实例连接到ELB。
  • 确保您有带有时间戳的应用程序日志记录,并且如果您捕获Python中的所有异常(这通常不是一个好主意),则记录该异常。如果你捕获所有异常,你可能会有一个微妙而隐藏的错误。

  • 模拟失败(即从ELB手动删除“one”实例),现在查看您的日志并确保在日志中看到这一点。如果你可以重现相同的行为,你可以找出如何解决它。

  • 查看像https://loader.io/这样的Web服务自动化测试工具。这对于模拟断开连接时的条件非常有用。

  • 使用不同的负载均衡器尝试相同的应用程序,即HAProxy(我可能最后尝试这个)。