This repository was archived by the owner on May 17, 2020. It is now read-only.
forked from CODARcode/ChimbukoVisualizationII
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmanager.py
More file actions
119 lines (93 loc) · 3.41 KB
/
manager.py
File metadata and controls
119 lines (93 loc) · 3.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import subprocess
import sys
import os
import eventlet
eventlet.monkey_patch()
from flask_script import Manager, Command, Server as _Server, Option
from server import create_app, db, socketio
manager = Manager(create_app)
# Note that socketio.run(app) runs a production ready server
# when eventlet or gevent are installed. If neither of these
# are installed, then the application runs on Flask's developement
# web server, which is not appropriate for production use.
class Server(_Server):
help = description = 'Runs the Socket.IO web server'
def get_options(self):
options = {
Option('-h', '--host',
dest='host',
default=self.host),
Option('-p', '--port',
dest='port',
type=int,
default=self.port),
Option('-d', '--debug',
action='store_true',
dest='use_debugger',
help=('enable the Werkzeug debugger (DO NOT use in '
'production code'),
default=self.use_debugger),
Option('-D', '--no-debug',
action='store_false',
dest='use_debugger',
help='disable the Werkzeug debugger',
default=self.use_debugger),
Option('-r', '--reload',
action='store_true',
dest='use_reloader',
help=('monitor Python files for changes (not 100%% safe '
'for production use'),
default=self.use_reloader),
Option('-R', '--no-reload',
action='store_false',
dest='use_reloader',
help='do not monitor Python files for changes',
default=self.use_reloader)
}
return options
def __call__(self, app, host, port, use_debugger, use_reloader):
# override the default runserver command to start a Socket.IO server
if use_debugger is None:
use_debugger = app.debug
if use_debugger is None:
use_debugger = True
if use_reloader is None:
use_reloader = app.debug
socketio.run(app,
host=host,
port=port,
debug=use_debugger,
use_reloader=use_reloader,
**self.server_options)
manager.add_command("runserver", Server())
class CeleryWorker(Command):
"""Starts the celery worker"""
name = 'celery'
capture_all_args = True
def run(self, argv):
ret = subprocess.call(
['celery', 'worker', '-A', 'server.celery'] + argv)
sys.exit(ret)
manager.add_command("celery", CeleryWorker())
@manager.command
def createdb(drop_first=False):
"""Creates the database."""
if drop_first:
db.drop_all()
db.create_all()
@manager.command
def test():
"""Runs unit tests."""
tests = subprocess.call(['python', '-c', 'import tests; tests.run()'])
sys.exit(tests)
@manager.command
def lint():
"""Runs code linter"""
lint = subprocess.call(['flake8', '--ignore=E402', 'server/', 'manage.py', 'tests/'])
if lint:
print('OK')
sys.exit(lint)
if __name__ == '__main__':
if sys.argv[1] == 'test' or sys.argv[1] == 'lint':
os.environ['SERVER_CONFIG'] = 'testing'
manager.run()