WebKit.AppServer | index /usr/local/share/webware/WebKit/AppServer.py

`The AppServer singleton.
The `AppServer` singleton is the controlling object/process/thread.
`AppServer` receives requests and dispatches them to `Application`
(via `Application.dispatchRawRequest`).
There is only one instance of AppServer, `globalAppServer` contains
that instance. Use it like:
from WebKit.AppServer import globalAppServer
`ThreadedAppServer` completes the implementation, dispatching
these requests to separate threads. `AppServer`, at least in the
abstract, could support different execution models and environments,
but that support is not yet realized (Will it ever be realized?).
The distinction between `AppServer` and `Application` is somewhat
vague -- both are global singletons and both handle dispatching requests.
`AppServer` works on a lower level, handling sockets and threads.`

Modules

``

WebKit.Profiler | os | sys |

Classes

``

WebKit.ConfigurableForServerSidePath.ConfigurableForServerSidePath(MiscUtils.Configurable.Configurable)
  AppServer

class AppServer(WebKit.ConfigurableForServerSidePath.ConfigurableForServerSidePath)
`` | `The AppServer singleton. Purpose and usage are explained in the module docstring.`

Method resolution order:
  AppServer
  WebKit.ConfigurableForServerSidePath.ConfigurableForServerSidePath
  MiscUtils.Configurable.Configurable
  __builtin__.object

Methods defined here:

__init__(self, path=None)
  `Sets up and starts the `AppServer`.
  `path` is the working directory for the AppServer
  (directory in which AppServer is contained, by default)
  This method loads plugins, creates the Application object,
  and starts the request handling loop.`

application(self)
  `Return the Application singleton.`

checkForInstall(self)
  `Check whether Webware was installed.
  Exits with an error message if Webware was not installed.
  Called from `__init__`.`

closeThread(self)
  `This method is called when the shutdown sequence is initiated.`

configFilename(self)
  `Return the name of the AppServer configuration file.`

configReplacementValues(self)
  `Get config values that need to be escaped.`

createApplication(self)
  `Create and return an application object. Invoked by __init__.`

defaultConfig(self)
  `The default AppServer.config.`

initiateShutdown(self)
  `Ask the master thread to begin the shutdown.`

isPersistent(self)
  `Check whether the AppServer is persistent.
  When using `OneShot`, the AppServer will exist only for a single
  request, otherwise it will stay around indefinitely.`

loadPlugIn(self, path)
  `Load and return the given plug-in.
  May return None if loading was unsuccessful (in which case this method
  prints a message saying so). Used by `loadPlugIns` (note the **s**).`

loadPlugIns(self)
  `Load all plug-ins.
  A plug-in allows you to extend the functionality of WebKit without
  necessarily having to modify its source. Plug-ins are loaded by
  AppServer at startup time, just before listening for requests.
  See the docs in `WebKit.PlugIn` for more info.`

numRequests(self)
  `Return the number of requests.
  Returns the number of requests received by this app server
  since it was launched.`

plugIn(self, name, default=<class 'MiscUtils.NoDefault'>)
  `Return the plug-in with the given name.`

plugIns(self)
  `Return a list of the plug-ins loaded by the app server.
  Each plug-in is a Python package.`

printStartUpMessage(self)
  `Invoked by __init__, prints a little intro.`

readyForRequests(self)
  `Declare ready for getting requests.
  Should be invoked by subclasses when they are finally ready to
  accept requests. Records some stats and prints a message.`

recordPID(self)
  `Save the pid of the AppServer to a file.`

serverSidePath(self, path=None)
  `Return the absolute server-side path of the WebKit app server.
  If the optional path is passed in, then it is joined with the
  server side directory to form a path relative to the app server.`

shutDown(self)
  `Shut down the AppServer.
  Subclasses may override and normally follow this sequence:
  1. set self._running = 1 (request to shut down)
  2. class specific statements for shutting down
  3. Invoke super's shutDown() e.g., `AppServer.shutDown(self)`
  4. set self._running = 0 (server is completely down)`

startTime(self)
  `Return the time the app server was started.
  The time is given as seconds, like time().`

version(self)
  `Return WebKit version.`

webKitPath(self)
  `Return teh WebKit path.`

webwarePath(self)
  `Return the Webware path.`

Methods inherited from WebKit.ConfigurableForServerSidePath.ConfigurableForServerSidePath:

setting(self, name, default=<class 'MiscUtils.NoDefault'>)
  `Return setting, using the server side path when indicated.
  Returns the setting, filtered by serverSidePath(),
  if the name ends with ``Filename`` or ``Dir``.`

Methods inherited from MiscUtils.Configurable.Configurable:

commandLineConfig(self)
  `Return the settings that came from the command-line.
  These settings come via addCommandLineSetting().`

config(self)
  `Return the configuration of the object as a dictionary.
  This is a combination of defaultConfig() and userConfig().
  This method caches the config.`

configName(self)
  `Return the name of the configuration file without the extension.
  This is the portion of the config file name before the '.config'.
  This is used on the command-line.`

hasSetting(self, name)
  `Check whether a configuration setting has been changed.`

printConfig(self, dest=None)
  `Print the configuration to the given destination.
  The default destination is stdout. A fixed with font is assumed
  for aligning the values to start at the same column.`

setSetting(self, name, value)
  `Set a particular configuration setting.`

userConfig(self)
  `Return the user config overrides.
  These settings can be found in the optional config file.
  Returns {} if there is no such file.
  The config filename is taken from configFilename().`

Data descriptors inherited from MiscUtils.Configurable.Configurable:

__dict__
  `dictionary for instance variables (if defined)`

__weakref__
  `list of weak references to the object (if defined)`

Functions

``

main()
  `Start the Appserver.`

stop(*args, **kw)
  `Stop the AppServer (which may be in a different process).`

time(...)
  `time() -> floating point number
  Return the current time in seconds since the Epoch.
  Fractions of a second may be present if the system clock provides them.`

Data
`` |  | defaultConfig = {'CheckInterval': 100, 'PidFile': 'appserver.pid', 'PlugInDirs': [], 'PlugIns': [], 'PrintConfigAtStartUp': True, 'SilentURIs': None, 'Verbose': True} globalAppServer = None