12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #!/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)
|