문제

논리의 일부를 별도의 배치 프로세스로 옮기고 싶은 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를 사용하는 경우 요청이 존재하도록 요청이 필요하기 때문에 작동하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top