如果我多次调用boto.connect_xxx,其中xxx是某个服务(dynamodb,s3等),它每次都会创建一个新的连接池吗?我想做的是这样的事情(Flask中的例子):
@app.before_request
def before_request():
g.db = connect_dynamodb()
Run Code Online (Sandbox Code Playgroud)
确保我始终连接,但我不希望在每次请求之前执行此操作,如果它每次都会创建新的安全令牌等,整个rigamarole.在应用程序启动时调用connect_xxx()一次是否安全,并依赖boto根据需要生成新连接等等?
假设我有一个Flask应用程序,由uWSGI使用多个进程提供服务,例如:
uwsgi --socket 127.0.0.1:3031 --file flaskapp.py --callable app --processes 4
Run Code Online (Sandbox Code Playgroud)
我的Flask应用程序组织如下:
/flaskapp
app.py
/db
__init__.py
somefile.py
somefile2.py
...
Run Code Online (Sandbox Code Playgroud)
我正在使用boto连接到DynamoDB.该__init__.py文件为空,每个somefilexxx.py文件都是这样的:
db = boto.connect_dynamodb()
table = db.get_table('table')
def do_stuff_with_table():
Run Code Online (Sandbox Code Playgroud)
我不在应用程序中使用线程,我不认为uWSGI使用线程,除非我明确启用它们--threads.这个设置有意义吗?是否有任何线程问题我不得不担心urllib(你可能会猜我对线程知之甚少)?
或者,它会更有意义调用connect_dynamodb()中__init__.py的文件,并只加载在表somefile.py文件?