forked from yinhm/datafeed
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.py
executable file
·57 lines (43 loc) · 1.42 KB
/
server.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
56
57
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Copyright 2010 yinhm
'''A datafeed server daemon.
'''
import config
import logging
import os
import signal
import sys
import tornado
from tornado import ioloop
from tornado.options import define, options
from datafeed.exchange import SH
from datafeed.imiguserver import ImiguApplication
from datafeed.server import Server
DATA_DIR = os.path.join(os.path.realpath(os.path.dirname(__file__)),
'var')
define("port", default=8082, help="run on the given port", type=int)
define("datadir", default=DATA_DIR, help="default data dir", type=str)
def main():
tornado.options.parse_command_line()
app = ImiguApplication(options.datadir, SH())
server = Server(app, auth_password=config.AUTH_PASSWORD)
server.listen(options.port)
io_loop = tornado.ioloop.IOLoop.instance()
check_time = 1 * 1000 # every second
scheduler = ioloop.PeriodicCallback(app.periodic_job,
check_time,
io_loop=io_loop)
def shutdown(signum, frame):
print 'Signal handler called with signal', signum
io_loop.stop()
scheduler.stop()
server.log_stats()
logging.info("==> Exiting datafeed.")
signal.signal(signal.SIGTERM, shutdown)
signal.signal(signal.SIGINT, shutdown)
scheduler.start()
io_loop.start()
if __name__ == "__main__":
main()