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()
import os import sqlite3 from quixote.publish import Publisher from quixote import enable_ptl enable_ptl() import ui _DB_PATH = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'hello.db') def create_publisher(): db = sqlite3.connect(_DB_PATH) return Publisher(ui.RootDirectory(db), display_exceptions='plain') if __name__ == '__main__': from quixote.server.scgi_server import run host = 'localhost' port = 3000 print 'creating demo listening on %s:%d' % (host, port) run(create_publisher, host=host, port=port)
#!/usr/bin/python import quixote.config import quixote.session from quixote.server.scgi_server import run from quixote.publish1 import Publisher import imagestore.session import imagestore.config config = quixote.config.Config() config.read_file('imagestore/config.conf') def create_my_publisher(): imagestore.db.db_connect() p = Publisher(imagestore, config=config) session_manager=quixote.session.SessionManager(session_class=imagestore.session.ImagestoreSession, session_mapping=imagestore.session.ImagestoreSessionMapping()) p.set_session_manager(session_manager) return p if __name__ == '__main__': run(create_my_publisher, port=imagestore.config.get('server', 'scgi_port'), script_name=imagestore.config.get('server', 'path'))