2012-07-24 3 views
2

내가 좋아하는, 여러 프로세스를 사용 uWSGI에 의해 제공되는 플라스크 응용 프로그램,이 말 스레드 안전 :uWSGI + 플라스크 + BOTO -

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

그리고 내 플라스크 응용 프로그램은 다음과 같이 구성된다 :

/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(): 

, 그리고 내가 명시 적으로 --threads로를 사용하지 않는 uWSGI 스레드를 사용하여 생각하지 않습니다. 이 설정이 의미가 있습니까? urllib에 대해 걱정해야 할 스레딩 문제가 있습니까? (스레드에 대해 알지 못하지만 ...)?

또는 __init__.py 파일에서 connect_dynamodb()을 호출하고 somefile.py 파일의 테이블 만로드하는 것이 더 맞습니까?

답변

6

당신이 uWSGI에서 스레드를 사용하도록 설정하지 않은 이후 (참조 : --enable-threads, --threads)를 여기에 무슨 더 파이썬 스레딩 없다

내가 --lazy를 사용하는 것이 좋습니다 것입니다, 당신의 응용 프로그램을 일으킬 것이다 (BOTO이나, 그렇지.) 각 근로자 포스트 포크에 적재한다. 그런 다음 각 작업자가 적절한 연결/풀/등을 가지도록 해당 동작에 의존 할 수 있습니다. 공유 상태의 우려없이 사용할 수 있습니다.

+1

감사합니다. 특히 - 게으른 제안입니다. –

+0

@ CalebWright 기꺼이 도와 드리겠습니다. –