假设我有一个 Flask 应用程序,由 uWSGI 使用多个进程提供服务,例如:
uwsgi --socket 127.0.0.1:3031 --file flaskapp.py --callable app --processes 4
我的 Flask 应用程序是这样组织的:
/flaskapp
app.py
/db
__init__.py
somefile.py
somefile2.py
...
我正在使用 boto 连接到 DynamoDB。这__init__.py
文件为空,并且每个somefilexxx.py
文件的开头是这样的:
db = boto.connect_dynamodb()
table = db.get_table('table')
def do_stuff_with_table():
我不在应用程序中使用线程,并且我不认为 uWSGI 使用线程,除非我显式启用它们--threads
。这样的设置有意义吗?我是否需要担心 urllib 的任何线程问题(你可能猜我对线程知之甚少......)?
或者,打电话更有意义吗?connect_dynamodb()
in the __init__.py
文件并仅加载表中的somefile.py
files?
由于您尚未在uWSGI中启用线程(请参阅:--enable-threads
, --threads
)这里没有 Python 线程(在 Boto 或其他地方)。
我建议使用--lazy
,这将导致您的应用程序在每个工作人员分叉后加载。然后,您可以简单地依靠该行为来确保每个工作人员都有适当的连接/池/等。无需担心共享状态即可使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)