2014-01-05 21 views
3

nginx, uwsgi 및 SQLAlchemy와 함께 설치 프로그램을 사용하고 있습니다. 나는 최근에 SQLObject에서 전환했고 SQLAlchemy로 이상한 무작위 오류를보고 있습니다.SQLAlchemy의 무작위 오류

sqlalchemy.exc.ResourceClosedError: This result object does not return rows. It has been closed automatically. 

나 : 예를 들어

sqlalchemy.exc.NoSuchColumnError: "Could not locate column in row for column 'module.id'" 

이 내가 잘 모르는 것 같아요 SQLAlchemy의에서 행동의 어떤 종류입니까? uwsgi의 여러 프로세스/스레드와 관련 될 수 있습니까?

내 uwsgi 설정 파일은 다음과 같습니다 /thesystem/code/api.py 엔트리로 포인트

[uwsgi] 
plugins=python 
socket = 127.0.0.1:9002 
wsgi-file = /thesystem/code/api.py 
master = True 
processes = 4 
threads = 2 
daemonize = /thesystem/logs/uwsgi.log 
pidfile = /thesystem/uwsgi.pid 

답변

7

아주 아마 열려는 연결.

즉, 파일 설명자가 근로자에게 상속되며 sqlalchemy에서는 작동하지 않습니다.

--lazy - 응용 프로그램을 추가 (게으른-애플 리케이션 = 당신의 INI 설정에서 참) 포크를 마스터에 넣기 한 후 호출하는 대신 각 근로자에 ​​/thesystem/code/api.py로드()

0

허용 된 답변 외에도 예를 들어 메모리 사용량이 증가하거나 uwsgi 재로드 전략의 변경으로 인해 게으른 앱에 대한 프리 포킹을 변경하고 싶지 않거나 변경할 수없는 경우에는 분기 후 데이터베이스 :

import uwsgi 
def setup_db(): 
    """ routine that sets up the connection to your database """ 
    ... 

uwsgi.post_fork_hook = setup_db