mirror of
https://github.com/SickGear/SickGear.git
synced 2024-12-04 10:23:37 +00:00
cec4ed573d
Switched out sqlite3 libs in favour of SQLAlchemy v0.9, will gradually migrate dialects and scheme to be fully SQLAlchemy compliant for using there ORM with sessions instead of direct. Fixed getEpisode function to stop making unrequired scene number conversions on already converted data thats available now from cache.
110 lines
4.1 KiB
Python
110 lines
4.1 KiB
Python
#! /usr/bin/env python
|
|
"""The CherryPy daemon."""
|
|
|
|
import sys
|
|
|
|
import cherrypy
|
|
from cherrypy.process import plugins, servers
|
|
from cherrypy import Application
|
|
|
|
|
|
def start(configfiles=None, daemonize=False, environment=None,
|
|
fastcgi=False, scgi=False, pidfile=None, imports=None,
|
|
cgi=False):
|
|
"""Subscribe all engine plugins and start the engine."""
|
|
sys.path = [''] + sys.path
|
|
for i in imports or []:
|
|
exec("import %s" % i)
|
|
|
|
for c in configfiles or []:
|
|
cherrypy.config.update(c)
|
|
# If there's only one app mounted, merge config into it.
|
|
if len(cherrypy.tree.apps) == 1:
|
|
for app in cherrypy.tree.apps.values():
|
|
if isinstance(app, Application):
|
|
app.merge(c)
|
|
|
|
engine = cherrypy.engine
|
|
|
|
if environment is not None:
|
|
cherrypy.config.update({'environment': environment})
|
|
|
|
# Only daemonize if asked to.
|
|
if daemonize:
|
|
# Don't print anything to stdout/sterr.
|
|
cherrypy.config.update({'log.screen': False})
|
|
plugins.Daemonizer(engine).subscribe()
|
|
|
|
if pidfile:
|
|
plugins.PIDFile(engine, pidfile).subscribe()
|
|
|
|
if hasattr(engine, "signal_handler"):
|
|
engine.signal_handler.subscribe()
|
|
if hasattr(engine, "console_control_handler"):
|
|
engine.console_control_handler.subscribe()
|
|
|
|
if (fastcgi and (scgi or cgi)) or (scgi and cgi):
|
|
cherrypy.log.error("You may only specify one of the cgi, fastcgi, and "
|
|
"scgi options.", 'ENGINE')
|
|
sys.exit(1)
|
|
elif fastcgi or scgi or cgi:
|
|
# Turn off autoreload when using *cgi.
|
|
cherrypy.config.update({'engine.autoreload_on': False})
|
|
# Turn off the default HTTP server (which is subscribed by default).
|
|
cherrypy.server.unsubscribe()
|
|
|
|
addr = cherrypy.server.bind_addr
|
|
if fastcgi:
|
|
f = servers.FlupFCGIServer(application=cherrypy.tree,
|
|
bindAddress=addr)
|
|
elif scgi:
|
|
f = servers.FlupSCGIServer(application=cherrypy.tree,
|
|
bindAddress=addr)
|
|
else:
|
|
f = servers.FlupCGIServer(application=cherrypy.tree,
|
|
bindAddress=addr)
|
|
s = servers.ServerAdapter(engine, httpserver=f, bind_addr=addr)
|
|
s.subscribe()
|
|
|
|
# Always start the engine; this will start all other services
|
|
try:
|
|
engine.start()
|
|
except:
|
|
# Assume the error has been logged already via bus.log.
|
|
sys.exit(1)
|
|
else:
|
|
engine.block()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
from optparse import OptionParser
|
|
|
|
p = OptionParser()
|
|
p.add_option('-c', '--config', action="append", dest='config',
|
|
help="specify config file(s)")
|
|
p.add_option('-d', action="store_true", dest='daemonize',
|
|
help="run the server as a daemon")
|
|
p.add_option('-e', '--environment', dest='environment', default=None,
|
|
help="apply the given config environment")
|
|
p.add_option('-f', action="store_true", dest='fastcgi',
|
|
help="start a fastcgi server instead of the default HTTP "
|
|
"server")
|
|
p.add_option('-s', action="store_true", dest='scgi',
|
|
help="start a scgi server instead of the default HTTP server")
|
|
p.add_option('-x', action="store_true", dest='cgi',
|
|
help="start a cgi server instead of the default HTTP server")
|
|
p.add_option('-i', '--import', action="append", dest='imports',
|
|
help="specify modules to import")
|
|
p.add_option('-p', '--pidfile', dest='pidfile', default=None,
|
|
help="store the process id in the given file")
|
|
p.add_option('-P', '--Path', action="append", dest='Path',
|
|
help="add the given paths to sys.path")
|
|
options, args = p.parse_args()
|
|
|
|
if options.Path:
|
|
for p in options.Path:
|
|
sys.path.insert(0, p)
|
|
|
|
start(options.config, options.daemonize,
|
|
options.environment, options.fastcgi, options.scgi,
|
|
options.pidfile, options.imports, options.cgi)
|