def serve_forever(port, alineaPackage, configFile): config = Config() config.read_file(configFile) sessionPickle = SessionPickle(sessionsPickleFile) sessions = sessionPickle.loadSessions() sessMgr = SessionManager(session_class=MySession, session_mapping=sessions) def create_publisher(): directory = __import__('%s' % alineaPackage).Directory.AlineaDirectory() pub = Publisher(directory, config=config, session_manager=sessMgr) return pub # we have to give SCGI the script_name of you app, so we extract it # from the site url. script_name = urllib2.urlparse.urlparse(site_url)[2] lock = threading.Lock() try: run(create_publisher, port=port,script_name=script_name,max_children=1) except KeyboardInterrupt: if not lock.locked: sessionPickle.saveSessions(sessMgr.sessions) lock.acquire()
def main(): out = sys.stdout sys.stdout = EmptyFile() sys.stderr = EmptyFile() # session handling sessionPickle = SessionPickle(config.sessionsPickleFile) sessions = sessionPickle.loadSessions() sessMgr = SessionManager(session_class=MySession, session_mapping=sessions) directory = AlineaDirectory() conf = Config() conf.read_file(CONFIG) publisher = Publisher(directory, session_manager=sessMgr, config=conf) request = HTTPRequest(sys.stdin, os.environ) response = publisher.process_request(request) response.write(out) sessionPickle.saveSessions(sessMgr.sessions)