Browse Source

added timeout

no_compress
Raphael Roberts 7 years ago
parent
commit
6c7806e5cf
  1. 23
      ctabus.py
  2. 8
      main.py

23
ctabus.py

@ -4,12 +4,15 @@ import json
from sensitive import api from sensitive import api
def get_data(type, api_key=api, **args):
def get_data(type, api_key=api, timeout=None, **args):
base_url = "http://www.ctabustracker.com/bustime/api/v2/{type}?{query}" base_url = "http://www.ctabustracker.com/bustime/api/v2/{type}?{query}"
args['key'] = api_key args['key'] = api_key
args['format'] = 'json' args['format'] = 'json'
url = base_url.format(type=type, query=urlencode(args)) url = base_url.format(type=type, query=urlencode(args))
response = urlopen(url)
if timeout is not None:
response = urlopen(url,timeout = timeout)
else:
response = urlopen(url)
data = json.load(response)['bustime-response'] data = json.load(response)['bustime-response']
try: try:
data['error'] data['error']
@ -18,17 +21,17 @@ def get_data(type, api_key=api, **args):
return data return data
def get_times(stop_id, api_key=api):
return get_data('getpredictions', api_key, stpid=stop_id)
def get_times(stop_id, api_key=api, timeout=None):
return get_data('getpredictions', api_key, stpid=stop_id, timeout=timeout)
def get_routes(api_key=api):
return get_data('getroutes', api_key)
def get_routes(api_key=api, timeout=None):
return get_data('getroutes', api_key, timeout=timeout)
def get_directions(route, api_key=api):
return get_data('getdirections', api_key, rt=route)
def get_directions(route, api_key=api, timeout=None):
return get_data('getdirections', api_key, rt=route, timeout=timeout)
def get_stops(route, direction, api_key=api):
return get_data('getstops', api_key, rt=route, dir=direction)
def get_stops(route, direction, api_key=api, timeout=None):
return get_data('getstops', api_key, rt=route, dir=direction, timeout=timeout)

8
main.py

@ -7,6 +7,7 @@ import datetime
import os import os
import re import re
import time import time
import urllib
# for logging # for logging
import os.path as osp import os.path as osp
import sys import sys
@ -186,11 +187,16 @@ if __name__ == '__main__':
try: try:
show(data, args.route, True) show(data, args.route, True)
s = time.perf_counter() s = time.perf_counter()
data = ctabus.get_times(stop_id)
timeout = 1
if args.periodic > timeout:
timeout = args.periodic
data = ctabus.get_times(stop_id,timeout=timeout)
e = time.perf_counter() - s e = time.perf_counter() - s
if e < args.periodic: if e < args.periodic:
time.sleep(args.periodic-e) time.sleep(args.periodic-e)
except KeyboardInterrupt: except KeyboardInterrupt:
_done = True _done = True
except urllib.error.URLError:
print("Error fetching times")
else: else:
show(data, args.route) show(data, args.route)
Loading…
Cancel
Save