如果我多次调用boto.connect_xxx,其中xxx是某个服务(dynamodb,s3等),它每次都会创建一个新的连接池吗?我想做的是这样的事情(Flask中的例子):
@app.before_request
def before_request():
g.db = connect_dynamodb()
确保我始终连接,但我不希望在每次请求之前执行此操作,如果它每次都会创建新的安全令牌等,整个rigamarole。在应用程序启动时调用connect_xxx()一次是否安全,并依赖boto根据需要生成新连接等等?
答案 0 :(得分:11)
最好的方法是在应用程序启动时调用connect_xxx方法一次,然后依靠boto来管理连接。该规则的唯一例外是您使用多个线程。在这种情况下,每个线程应该创建它自己的连接,因为boto使用的httplib不是线程安全的。
即使你在每个请求之前调用connect_xxx方法,你真的应该没问题。 Boto在类级别池连接,并且应该以非常有效的方式处理它。