etiquette/frontends/etiquette_flask/etiquette_flask_launch.py

70 lines
1.8 KiB
Python

'''
This file is the gevent launcher for local / development use.
Simply run it on the command line:
python etiquette_flask_launch.py [port]
'''
import gevent.monkey; gevent.monkey.patch_all()
import logging
handler = logging.StreamHandler()
log_format = '{levelname}:etiquette.{module}.{funcName}: {message}'
handler.setFormatter(logging.Formatter(log_format, style='{'))
logging.getLogger().addHandler(handler)
import argparse
import gevent.pywsgi
import sys
import etiquette_flask_entrypoint
site = etiquette_flask_entrypoint.site
def run(port=None, use_https=None):
if port is None:
port = 5000
else:
port = int(port)
if use_https is None:
use_https = port == 443
if use_https:
http = gevent.pywsgi.WSGIServer(
listener=('0.0.0.0', port),
application=site,
keyfile='D:\\git\\etiquette\\frontends\\etiquette_flask\\https\\etiquette.key',
certfile='D:\\git\\etiquette\\frontends\\etiquette_flask\\https\\etiquette.crt',
)
else:
http = gevent.pywsgi.WSGIServer(
listener=('0.0.0.0', port),
application=site,
)
message = f'Starting server on port {port}'
if use_https:
message += ' (https)'
print(message)
try:
http.serve_forever()
except KeyboardInterrupt:
pass
return 0
def run_argparse(args):
return run(port=args.port, use_https=args.use_https)
def main(argv):
parser = argparse.ArgumentParser()
parser.add_argument(dest='port', nargs='?', default=None)
parser.add_argument('--https', dest='use_https', action='store_true', default=None)
parser.set_defaults(func=run_argparse)
args = parser.parse_args(argv)
return args.func(args)
if __name__ == '__main__':
raise SystemExit(main(sys.argv[1:]))