Boto connect_xxx方法和连接池

时间:2012-07-24 00:36:20

标签: python amazon-web-services flask boto

如果我多次调用boto.connect_xxx,其中xxx是某个服务(dynamodb,s3等),它每次都会创建一个新的连接池吗?我想做的是这样的事情(Flask中的例子):

@app.before_request
def before_request():
    g.db = connect_dynamodb()

确保我始终连接,但我不希望在每次请求之前执行此操作,如果它每次都会创建新的安全令牌等,整个rigamarole。在应用程序启动时调用connect_xxx()一次是否安全,并依赖boto根据需要生成新连接等等?

1 个答案:

答案 0 :(得分:11)

最好的方法是在应用程序启动时调用connect_xxx方法一次,然后依靠boto来管理连接。该规则的唯一例外是您使用多个线程。在这种情况下,每个线程应该创建它自己的连接,因为boto使用的httplib不是线程安全的。

即使你在每个请求之前调用connect_xxx方法,你真的应该没问题。 Boto在类级别池连接,并且应该以非常有效的方式处理它。