#!/usr/bin/env python3 import argparse from pywebio.platform import path_deploy, path_deploy_http parser = argparse.ArgumentParser(description="Deploy the PyWebIO applications from a directory", add_help=False) parser.add_argument("path", help="Base directory to load PyWebIO application") parser.add_argument("-p", "--port", help="The port the server listens on", type=int, default=8080) parser.add_argument("-h", "--host", help="The host the server listens on", default='0.0.0.0') parser.add_argument("--no-index", help="Disable default index page", action="store_true") parser.add_argument("--static-dir", help="Directory to store the application static files") parser.add_argument("--no-cdn", help="Disable front-end static resources CDN", action="store_true") parser.add_argument("-d", "--debug", help="Tornado Server's debug mode", action="store_true") parser.add_argument("--http", help="Use HTTP protocol to communication between server and browser, default use WebSocket", action="store_true") parser.add_argument("--help", help="Print help message", action='help') group = parser.add_argument_group('http arguments', 'Extra arguments when set --http') group.add_argument("--session-expire-seconds", help="Session expiration time, in seconds(default 600s)", type=int, default=None) group.add_argument("--session-cleanup-interval", help="Session cleanup interval, in seconds(default 300s)", type=int, default=None) group = parser.add_argument_group('websocket arguments', 'Extra arguments when not set --http') group.add_argument("--websocket-max-message-size", help="Max bytes of a message which Tornado can accept") group.add_argument("--websocket-ping-interval", type=int, default=None) group.add_argument("--websocket-ping-timeout", type=int, default=None) if __name__ == '__main__': args = parser.parse_args() kwargs = dict(vars(args)) kwargs.pop('http') kwargs['base'] = kwargs.pop('path') kwargs['index'] = not kwargs.pop('no_index') kwargs['cdn'] = not kwargs.pop('no_cdn') if args.http: drop_key = ['websocket_max_message_size', 'websocket_ping_interval', 'websocket_ping_timeout'] else: drop_key = ['session_expire_seconds', 'session_cleanup_interval'] for i in drop_key: kwargs.pop(i, None) for k in list(kwargs): if kwargs[k] is None: del kwargs[k] if args.http: path_deploy_http(**kwargs) else: path_deploy(**kwargs)