Frage

Ich habe eine Pylone app, wo Ich mag würde einen Teil der Logik zu einem separaten Batch-Prozess bewegen. Ich habe es unter dem Haupt-App für die Prüfung ausgeführt wird, aber es wird viel Arbeit in der Datenbank zu tun, und ich möchte es ein separater Prozess, der ständig im Hintergrund ausgeführt wird. Die Hauptmasten App Jobs in die Datenbank vorlegen wird, und der neue Prozess wird die Arbeit in jedem Auftrag angefordert tun.

Wie kann ich einen Controller als Stand-alone-Skript starten?

Im Moment habe ich:

from warehouse2.controllers import importServer
importServer.runServer(60)

und in der Steuerung-Datei, aber nicht Teil der Controller-Klasse:

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)

Aber beginnend ImportServer.py auf der Kommandozeile ergibt sich:

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
War es hilfreich?

Lösung

Ich bin redacting meine Antwort und upvoting die andere Antwort von Ben Bangert, wie es die richtige ist. Antwortete ich und haben die richtige Art und Weise, da gelernt (unten erwähnt). Wenn Sie wirklich wollen, die Geschichte dieser Antwort Besuche die falsch zu sehen (aber die Arbeit) Lösung, die ich ursprünglich vorgeschlagen.

Andere Tipps

Wenn Sie Teile eines Pylons App zu laden, wie die Modelle von außen Pylone, die Pylone App im Skript laden zuerst:

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)

Das wird die Pylone App laden, die den größten Teil des Staates aufstellt, so dass Sie fortfahren können die SQLAlchemy Modelle und Session zu verwenden, um mit der Datenbank zu arbeiten.

Beachten Sie, dass, wenn Ihr Code der Pylonen Globals verwendet wie Request / Response / etc dann, dass, da sie eine Anfrage an seine im Gang zu existieren erfordern wird nicht funktionieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top