-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathrun.py
55 lines (42 loc) · 1.55 KB
/
run.py
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
#!/usr/bin/env python3.6
import asyncio
import os
import sys
from django.core.wsgi import get_wsgi_application
from django.core.management import call_command, execute_from_command_line
from django.db import DEFAULT_DB_ALIAS, connections
from ika.logger import logger
from ika.server import Server
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ika.conf")
application = get_wsgi_application()
def main():
if len(sys.argv) == 1:
print("Usage: ./run.py run")
return
if sys.argv[1] in ('makemigrations', 'runserver',):
execute_from_command_line(sys.argv)
elif sys.argv[1] == 'run':
from django.db.migrations.executor import MigrationExecutor
connection = connections[DEFAULT_DB_ALIAS]
connection.prepare_database()
executor = MigrationExecutor(connection)
plan = executor.migration_plan(executor.loader.graph.leaf_nodes())
if len(plan) > 0:
print('Synchronizing database schemas...')
call_command('migrate')
print()
print('Starting application...')
loop = asyncio.get_event_loop()
ika = Server()
ika.register_services()
try:
loop.run_until_complete(ika.connect())
except KeyboardInterrupt:
ika.disconnect('Manually interrupted by console access')
except:
ika.disconnect('Exception has occured in the main loop')
logger.exception('Exception has occured in the main loop')
finally:
loop.close()
if __name__ == '__main__':
main()