uWSGI + Flask + boto – hilo de seguridad

Digamos que tengo una aplicación Flask, servida por uWSGI utilizando múltiples procesos, como:

uwsgi --socket 127.0.0.1:3031 --file flaskapp.py --callable app --processes 4 

Y mi aplicación Flask está organizada así:

 /flaskapp app.py /db __init__.py somefile.py somefile2.py ... 

Y estoy usando boto para conectarme a DynamoDB. El archivo __init__.py está vacío, y cada archivo somefilexxx.py comienza algo así:

 db = boto.connect_dynamodb() table = db.get_table('table') def do_stuff_with_table(): 

No uso subprocesos en la aplicación, y no creo que uWSGI use subprocesos a menos que los habilite explícitamente con --threads . ¿Esta configuración tiene sentido? ¿Hay algún problema con los hilos que me deba preocupar con urllib (puede que suponga que conozco menos que nada sobre los hilos …)?

Alternativamente, ¿tendría más sentido llamar a connect_dynamodb() en el archivo __init__.py y cargar solo las tablas en los archivos somefile.py ?

Dado que no ha habilitado los subprocesos en uWSGI (consulte: --enable-threads , --threads ) no hay subprocesos de Python aquí (en Boto o de otra manera).

Recomendaría el uso de --lazy , que hará que su aplicación se cargue en cada bifurcación de trabajadores. Entonces, simplemente puede confiar en ese comportamiento para asegurarse de que cada trabajador tenga las conexiones / grupos / etc apropiados. Disponible sin las preocupaciones de estado compartido.