11

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

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

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

4

1 回答 1

11

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

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

于 2012-07-24T02:36:23.323 回答