Mercurial > templog
annotate server/ts.py @ 383:a032051475fe
ui tweaks
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Wed, 04 Jul 2012 22:36:52 +0800 |
parents | dae8eb26eaa3 |
children | 0f7c005b3f87 |
rev | line source |
---|---|
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
1 #!/usr/bin/env python2.7 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
2 |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
3 BTADDR = "00:12:03:27:70:88" |
349 | 4 SLEEP_TIME = 5 |
329
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
5 # time that the bluetooth takes to get going? |
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
6 EXTRA_WAKEUP = 0 |
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
7 |
330
7ac6b8846eea
- some fixes for server code
Matt Johnston <matt@ucc.asn.au>
parents:
329
diff
changeset
|
8 FETCH_TRIES = 3 |
7ac6b8846eea
- some fixes for server code
Matt Johnston <matt@ucc.asn.au>
parents:
329
diff
changeset
|
9 |
329
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
10 # avoid turning off the bluetooth etc. |
348 | 11 TESTING = False |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
12 |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
13 import sys |
333
298e502fdcd4
Add some web server handling
Matt Johnston <matt@ucc.asn.au>
parents:
332
diff
changeset
|
14 # for wrt |
298e502fdcd4
Add some web server handling
Matt Johnston <matt@ucc.asn.au>
parents:
332
diff
changeset
|
15 sys.path.append('/root/python') |
298e502fdcd4
Add some web server handling
Matt Johnston <matt@ucc.asn.au>
parents:
332
diff
changeset
|
16 import httplib |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
17 import time |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
18 import traceback |
334 | 19 import binascii |
20 import hmac | |
340 | 21 import zlib |
342 | 22 import urllib |
23 import urllib2 | |
334 | 24 |
25 import config | |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
26 |
332
05c1249da994
- Move crc16 to utils and fix it
Matt Johnston <matt@ucc.asn.au>
parents:
331
diff
changeset
|
27 from utils import monotonic_time, retry, readline, crc16 |
372 | 28 import utils |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
29 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
30 lightblue = None |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
31 try: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
32 import lightblue |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
33 except ImportError: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
34 import bluetooth |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
35 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
36 def get_socket(addr): |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
37 if lightblue: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
38 s = lightblue.socket() |
329
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
39 s.connect((addr, 1)) |
330
7ac6b8846eea
- some fixes for server code
Matt Johnston <matt@ucc.asn.au>
parents:
329
diff
changeset
|
40 s.settimeout(3) |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
41 else: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
42 s = bluetooth.BluetoothSocket( bluetooth.RFCOMM ) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
43 s.connect((addr, 1)) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
44 |
330
7ac6b8846eea
- some fixes for server code
Matt Johnston <matt@ucc.asn.au>
parents:
329
diff
changeset
|
45 s.setblocking(False) |
7ac6b8846eea
- some fixes for server code
Matt Johnston <matt@ucc.asn.au>
parents:
329
diff
changeset
|
46 |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
47 return s |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
48 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
49 |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
50 @retry() |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
51 def fetch(sock): |
330
7ac6b8846eea
- some fixes for server code
Matt Johnston <matt@ucc.asn.au>
parents:
329
diff
changeset
|
52 print "fetch" |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
53 sock.send("fetch\n") |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
54 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
55 crc = 0 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
56 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
57 lines = [] |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
58 l = readline(sock) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
59 if l != 'START\n': |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
60 print>>sys.stderr, "Bad expected START line '%s'\n" % l.rstrip('\n') |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
61 return None |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
62 crc = crc16(l, crc) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
63 |
330
7ac6b8846eea
- some fixes for server code
Matt Johnston <matt@ucc.asn.au>
parents:
329
diff
changeset
|
64 while True: |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
65 l = readline(sock) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
66 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
67 crc = crc16(l, crc) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
68 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
69 if l == 'END\n': |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
70 break |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
71 |
333
298e502fdcd4
Add some web server handling
Matt Johnston <matt@ucc.asn.au>
parents:
332
diff
changeset
|
72 lines.append(l.rstrip('\n')) |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
73 |
330
7ac6b8846eea
- some fixes for server code
Matt Johnston <matt@ucc.asn.au>
parents:
329
diff
changeset
|
74 print lines |
7ac6b8846eea
- some fixes for server code
Matt Johnston <matt@ucc.asn.au>
parents:
329
diff
changeset
|
75 |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
76 l = readline(sock) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
77 recv_crc = None |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
78 try: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
79 k, v = l.rstrip('\n').split('=') |
331
5de3fc71ce48
- Make the python work on openwrt
Matt Johnston <matt@ucc.asn.au>
parents:
330
diff
changeset
|
80 print k,v |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
81 if k == 'CRC': |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
82 recv_crc = int(v) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
83 if recv_crc < 0 or recv_crc > 0xffff: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
84 recv_crc = None |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
85 except ValueError: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
86 pass |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
87 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
88 if recv_crc is None: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
89 print>>sys.stderr, "Bad expected CRC line '%s'\n" % l.rstrip('\n') |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
90 return None |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
91 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
92 if recv_crc != crc: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
93 print>>sys.stderr, "Bad CRC: calculated 0x%x vs received 0x%x\n" % (crc, recv_crc) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
94 return None |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
95 |
333
298e502fdcd4
Add some web server handling
Matt Johnston <matt@ucc.asn.au>
parents:
332
diff
changeset
|
96 return lines |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
97 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
98 @retry() |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
99 def turn_off(sock): |
329
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
100 if TESTING: |
348 | 101 return 99 |
353
20f7161399a8
change timeout for readline
Matt Johnston <matt@ucc.asn.au>
parents:
349
diff
changeset
|
102 print>>sys.stderr, "sending btoff" |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
103 sock.send("btoff\n"); |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
104 # read newline |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
105 l = readline(sock) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
106 if not l: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
107 print>>sys.stderr, "Bad response to btoff\n" |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
108 return None |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
109 |
348 | 110 if not l.startswith('off:'): |
111 print>>sys.stderr, "Bad response to btoff '%s'\n" % l | |
112 return None | |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
113 off, next_wake = l.rstrip().split(':') |
348 | 114 print>>sys.stderr, "Next wake %s" % next_wake |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
115 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
116 return int(next_wake) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
117 |
338 | 118 @retry() |
119 def clear_meas(sock): | |
120 sock.send("clear\n"); | |
121 l = readline(sock) | |
122 if l and l.rstrip() == 'cleared': | |
123 return True | |
124 | |
125 print>>sys.stderr, "Bad response to clear %s\n" % str(l) | |
126 return False | |
127 | |
334 | 128 def send_results(lines): |
335 | 129 enc_lines = binascii.b2a_base64(zlib.compress('\n'.join(lines))) |
342 | 130 mac = hmac.new(config.HMAC_KEY, enc_lines).hexdigest() |
334 | 131 |
342 | 132 url_data = urllib.urlencode( {'lines': enc_lines, 'hmac': mac} ) |
334 | 133 con = urllib2.urlopen(config.UPDATE_URL, url_data) |
338 | 134 result = con.read(100) |
135 if result == 'OK': | |
136 return True | |
137 else: | |
138 print>>sys.stderr, "Bad result '%s'" % result | |
139 return False | |
334 | 140 |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
141 def do_comms(sock): |
331
5de3fc71ce48
- Make the python work on openwrt
Matt Johnston <matt@ucc.asn.au>
parents:
330
diff
changeset
|
142 print "do_comms" |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
143 d = None |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
144 # serial could be unreliable, try a few times |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
145 for i in range(FETCH_TRIES): |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
146 d = fetch(sock) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
147 if d: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
148 break |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
149 time.sleep(1) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
150 if not d: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
151 return |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
152 |
333
298e502fdcd4
Add some web server handling
Matt Johnston <matt@ucc.asn.au>
parents:
332
diff
changeset
|
153 res = send_results(d) |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
154 if not res: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
155 return |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
156 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
157 clear_meas(sock) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
158 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
159 next_wake = turn_off(sock) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
160 sock.close() |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
161 return next_wake |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
162 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
163 testcount = 0 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
164 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
165 def sleep_for(secs): |
329
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
166 until = monotonic_time() + secs |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
167 while True: |
330
7ac6b8846eea
- some fixes for server code
Matt Johnston <matt@ucc.asn.au>
parents:
329
diff
changeset
|
168 length = until - monotonic_time() |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
169 if length <= 0: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
170 return |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
171 time.sleep(length) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
172 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
173 def main(): |
348 | 174 next_wake_time = 0 |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
175 |
371 | 176 if '--daemon' in sys.argv: |
177 utils.cheap_daemon() | |
178 | |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
179 while True: |
329
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
180 sock = None |
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
181 try: |
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
182 sock = get_socket(BTADDR) |
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
183 except Exception, e: |
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
184 print>>sys.stderr, "Error connecting:" |
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
185 traceback.print_exc(file=sys.stderr) |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
186 sleep_time = SLEEP_TIME |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
187 if sock: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
188 next_wake = None |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
189 try: |
346 | 190 next_wake_interval = do_comms(sock) |
348 | 191 next_wake_time = time.time() + next_wake_interval |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
192 except Exception, e: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
193 print>>sys.stderr, "Error in do_comms:" |
329
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
194 traceback.print_exc(file=sys.stderr) |
348 | 195 if next_wake_time > time.time(): |
196 sleep_time = min(next_wake_time - time.time() - EXTRA_WAKEUP, sleep_time) | |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
197 |
348 | 198 print "Sleeping for %d" % sleep_time |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
199 sleep_for(sleep_time) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
200 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
201 if __name__ == '__main__': |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
202 main() |