Pylons 컨트롤러를 별도의 앱으로 실행 하시겠습니까?
문제
논리의 일부를 별도의 배치 프로세스로 옮기고 싶은 Pylons 앱이 있습니다. 테스트를 위해 기본 앱에서 실행했지만 데이터베이스에서 많은 작업을 수행 할 예정이며, 끊임없이 배경에서 실행될 별도의 프로세스가되기를 바랍니다. 메인 Pylons 앱은 작업을 데이터베이스에 제출하고 새로운 프로세스는 각 작업에서 요청한 작업을 수행합니다.
독립형 스크립트로 컨트롤러를 시작하려면 어떻게해야합니까?
나는 현재 가지고있다 :
from warehouse2.controllers import importServer
importServer.runServer(60)
컨트롤러 파일에서는 컨트롤러 클래스의 일부가 아닙니다.
def runServer(sleep_secs):
try:
imp = ImportserverController()
while(True):
imp.runImport()
sleepFor(sleep_secs)
except Exception, e:
log.info("Unexpected error: %s" % sys.exc_info()[0])
log.info(e)
그러나 명령 줄에서 importServer.py를 시작하면 다음과 같습니다.
2008-09-25 12:31:12.687000 Could not locate a bind configured on mapper Mapper|I
mportJob|n_imports, SQL expression or this Session
해결책
나는 내 응답을 수정하고 Ben Bangert의 다른 대답을 올바른 것이기 때문에 다른 대답을 발전시키고 있습니다. 나는 대답하고 그 이후로 올바른 방법을 배웠다 (아래 언급). 정말로 원한다면이 답변의 역사를 확인하여 원래 제안한 잘못된 (그러나 작동) 솔루션을 확인하십시오.
다른 팁
외부 Pylons의 모델과 같은 Pylons 앱의 일부를로드하려면 먼저 Pylons 앱을 스크립트에로드하십시오.
from paste.deploy import appconfig
from pylons import config
from YOURPROJ.config.environment import load_environment
conf = appconfig('config:development.ini', relative_to='.')
load_environment(conf.global_conf, conf.local_conf)
이렇게하면 Pylons 앱이로드되어 대부분의 주를 설정하여 SQLALCHEMY 모델과 세션을 사용하여 데이터베이스와 함께 작동 할 수 있습니다.
코드가 요청/응답/등과 같은 Pylons Globals를 사용하는 경우 요청이 존재하도록 요청이 필요하기 때문에 작동하지 않습니다.
제휴하지 않습니다 StackOverflow