9 # http://www.python.org/dev/peps/pep-0333/#the-server-gateway-side |
9 # http://www.python.org/dev/peps/pep-0333/#the-server-gateway-side |
10 |
10 |
11 from __future__ import absolute_import |
11 from __future__ import absolute_import |
12 |
12 |
13 import os |
13 import os |
14 import sys |
|
15 |
14 |
16 from .. import ( |
15 from .. import ( |
17 util, |
16 util, |
18 ) |
17 ) |
19 |
18 |
20 from . import ( |
19 from . import ( |
21 common, |
20 common, |
22 ) |
21 ) |
23 |
22 |
24 def launch(application): |
23 def launch(application): |
25 util.setbinary(sys.stdin) |
24 util.setbinary(util.stdin) |
26 util.setbinary(sys.stdout) |
25 util.setbinary(util.stdout) |
27 |
26 |
28 environ = dict(os.environ.iteritems()) |
27 environ = dict(os.environ.iteritems()) |
29 environ.setdefault('PATH_INFO', '') |
28 environ.setdefault('PATH_INFO', '') |
30 if environ.get('SERVER_SOFTWARE', '').startswith('Microsoft-IIS'): |
29 if environ.get('SERVER_SOFTWARE', '').startswith('Microsoft-IIS'): |
31 # IIS includes script_name in PATH_INFO |
30 # IIS includes script_name in PATH_INFO |
32 scriptname = environ['SCRIPT_NAME'] |
31 scriptname = environ['SCRIPT_NAME'] |
33 if environ['PATH_INFO'].startswith(scriptname): |
32 if environ['PATH_INFO'].startswith(scriptname): |
34 environ['PATH_INFO'] = environ['PATH_INFO'][len(scriptname):] |
33 environ['PATH_INFO'] = environ['PATH_INFO'][len(scriptname):] |
35 |
34 |
36 stdin = sys.stdin |
35 stdin = util.stdin |
37 if environ.get('HTTP_EXPECT', '').lower() == '100-continue': |
36 if environ.get('HTTP_EXPECT', '').lower() == '100-continue': |
38 stdin = common.continuereader(stdin, sys.stdout.write) |
37 stdin = common.continuereader(stdin, util.stdout.write) |
39 |
38 |
40 environ['wsgi.input'] = stdin |
39 environ['wsgi.input'] = stdin |
41 environ['wsgi.errors'] = sys.stderr |
40 environ['wsgi.errors'] = util.stderr |
42 environ['wsgi.version'] = (1, 0) |
41 environ['wsgi.version'] = (1, 0) |
43 environ['wsgi.multithread'] = False |
42 environ['wsgi.multithread'] = False |
44 environ['wsgi.multiprocess'] = True |
43 environ['wsgi.multiprocess'] = True |
45 environ['wsgi.run_once'] = True |
44 environ['wsgi.run_once'] = True |
46 |
45 |