web.web.wsgi

Package web :: Package web :: Module wsgi |
[hide private]
[frames] | no frames]

# Source Code for Module web.web.wsgi

     1  """
     2  WSGI Utilities
     3  (from web.py)
     4  """
     5
     6  import os, sys
     7
     8  import http
     9  import webapi as web
    10  from utils import listget
    11  from net import validaddr, validip
    12  import httpserver
    13
    14 -def runfcgi(func, addr=('localhost', 8000)):
    15      """Runs a WSGI function as a FastCGI server."""
    16      import flup.server.fcgi as flups
    17      return flups.WSGIServer(func, multiplexed=True, bindAddress=addr).run()
    18
    19 -def runscgi(func, addr=('localhost', 4000)):
    20      """Runs a WSGI function as an SCGI server."""
    21      import flup.server.scgi as flups
    22      return flups.WSGIServer(func, bindAddress=addr).run()
    23
    24 -def runwsgi(func):
    25      """
    26      Runs a WSGI-compatible `func` using FCGI, SCGI, or a simple web server,
    27      as appropriate based on context and `sys.argv`.
    28      """
    29
    30      if os.environ.has_key('SERVER_SOFTWARE'): # cgi
    31          os.environ['FCGI_FORCE_CGI'] = 'Y'
    32
    33      if (os.environ.has_key('PHP_FCGI_CHILDREN') #lighttpd fastcgi
    34        or os.environ.has_key('SERVER_SOFTWARE')):
    35          return runfcgi(func, None)
    36
    37      if 'fcgi' in sys.argv or 'fastcgi' in sys.argv:
    38          args = sys.argv[1:]
    39          if 'fastcgi' in args: args.remove('fastcgi')
    40          elif 'fcgi' in args: args.remove('fcgi')
    41          if args:
    42              return runfcgi(func, validaddr(args[0]))
    43          else:
    44              return runfcgi(func, None)
    45
    46      if 'scgi' in sys.argv:
    47          args = sys.argv[1:]
    48          args.remove('scgi')
    49          if args:
    50              return runscgi(func, validaddr(args[0]))
    51          else:
    52              return runscgi(func)
    53
    54      return httpserver.runsimple(func, validip(listget(sys.argv, 1, '')))
    55
    56 -def _is_dev_mode():
    57      # quick hack to check if the program is running in dev mode.
    58      if os.environ.has_key('SERVER_SOFTWARE') \
    59          or os.environ.has_key('PHP_FCGI_CHILDREN') \
    60          or 'fcgi' in sys.argv or 'fastcgi' in sys.argv \
    61          or 'mod_wsgi' in sys.argv:
    62              return False
    63      return True
    64
    65  # When running the builtin-server, enable debug mode if not already set.
    66  web.config.setdefault('debug', _is_dev_mode())
    67