source: OpenRLabs-Git/deploy/rlabs-docker/web2py-rlabs/handlers/web2py_on_gevent.py @ 42095c5

mainqndtest v1.1.1
Last change on this file since 42095c5 was 42bd667, checked in by David Fuertes <dfuertes@…>, 4 years ago

Historial Limpio

  • Property mode set to 100755
File size: 3.5 KB
Line 
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3
4import sys
5import os
6import optparse
7
8if hasattr(sys, 'frozen'):
9    path = os.path.dirname(os.path.abspath(sys.executable))
10elif '__file__' in globals():
11    path = os.path.dirname(os.path.abspath(__file__))
12else:
13    path = os.getcwd()
14os.chdir(path)
15
16sys.path = [path] + [p for p in sys.path if not p == path]
17
18from gevent import pywsgi
19from gevent.pool import Pool
20from gevent import monkey
21monkey.patch_all()
22
23def run(options):
24    import gluon.main
25    if options.password != '<recycle>':
26        gluon.main.save_password(options.password, int(options.port))
27    if options.logging:
28        application = gluon.main.appfactory(wsgiapp=gluon.main.wsgibase,
29                                            logfilename='httpserver.log',
30                                            profiler_dir=profiler)
31    else:
32        application = gluon.main.wsgibase
33    address = (options.ip, int(options.port))
34    workers = options.workers
35    spawn = workers and Pool(int(options.workers)) or 'default'
36    ssl_args = dict()
37    if options.ssl_private_key:
38        ssl_args['keyfile'] = options.ssl_private_key
39    if options.ssl_certificate:
40        ssl_args['certfile'] = options.ssl_certificate
41    server = pywsgi.WSGIServer(
42                    address, application,
43                    spawn=spawn, log=None,
44                    **ssl_args
45                    )
46    server.serve_forever()
47
48def main():
49    usage = 'python web2py_gevent.py -i 127.0.0.1 -p 8000 -a "<recycle>"'
50    try:
51        version = open('VERSION','r')
52    except IOError:
53        version = ''
54    parser = optparse.OptionParser(usage, None, optparse.Option, version)
55    msg = ('password to be used for administration '
56           '(use -a "<recycle>" to reuse the last password))')
57    parser.add_option('-a',
58                      '--password',
59                      default='<recycle>',
60                      dest='password',
61                      help=msg)
62
63    parser.add_option('-c',
64                      '--ssl_certificate',
65                      default='',
66                      dest='ssl_certificate',
67                      help='file that contains ssl certificate')
68
69    parser.add_option('-k',
70                      '--ssl_private_key',
71                      default='',
72                      dest='ssl_private_key',
73                      help='file that contains ssl private key')
74
75    parser.add_option('-l',
76                      '--logging',
77                      action='store_true',
78                      default=False,
79                      dest='logging',
80                      help='log into httpserver.log')
81
82    parser.add_option('-F',
83                      '--profiler',
84                      dest='profiler_dir',
85                      default=None,
86                      help='profiler dir')
87
88    parser.add_option('-i',
89                      '--ip',
90                      default='127.0.0.1',
91                      dest='ip',
92                      help='ip address')
93
94    parser.add_option('-p',
95                      '--port',
96                      default='8000',
97                      dest='port',
98                      help='port number')
99
100    parser.add_option('-w',
101                      '--workers',
102                      default=None,
103                      dest='workers',
104                      help='number of workers')
105
106    (options, args) = parser.parse_args()
107    print 'starting on %s:%s...' % (
108        options.ip, options.port)
109    run(options)
110
111if __name__ == '__main__':
112    main()
Note: See TracBrowser for help on using the repository browser.