def stopRouteRequest(stopID, routeID, devStoreKey): logging.debug("Stop/Route Request started") # got fetch all of the data for this stop sid = stopID + str(devStoreKey) + str(time.time()) routes = asynch.aggregateBusesAsynch(sid,stopID,routeID) if routes is None: response_dict = {'status':'0', 'timestamp':api_utils.getLocalTimestamp(), 'info':'No routes found' } return response_dict response_dict = {'status':'0', 'timestamp':api_utils.getLocalTimestamp() } # there should only be results. we assume the results are sorted by time stop_dict = {'stopID':stopID,} route_results = [] for r in routes: if not api_utils.inthepast(r.arrivalTime): route_results.append(dict({'routeID':r.routeID, 'vehicleID':'unknown', 'minutes':str(api_utils.computeCountdownMinutes(r.arrivalTime)), 'arrivalTime':r.arrivalTime, 'destination':r.destination, })) # add the populated stop details to the response stop_dict.update({'route':route_results}) response_dict.update({'stop':stop_dict}) return response_dict
def stopRequest(stopID, devKey): response_dict = None # look for memcahced results results_cache_key = 'stopRequest::%s' % stopID response_dict = memcache.get(results_cache_key) if( response_dict is None ): logging.debug("getarrivals : cache miss") response_dict = {'status':'0', 'timestamp':api_utils.getLocalTimestamp() } # unique key to track this request t = str(time.time()).split('.')[0] sid = '%s::%s::%s' % (stopID,devKey,t) # fetch all of the data for this stop routes = asynch.aggregateBusesAsynch(sid,stopID) if routes is None or len(routes) == 0: response_dict['status'] = '-1' response_dict['description'] = 'No routes found for this stop' response_dict['stopID'] = stopID return response_dict # get the stop details stop_dict = {'stopID':stopID,} # take the first 10 results. we assume the results are sorted by time #route_results = sorted(route_results, key=attrgetter('time')) route_results = [] for r in routes: minutes = api_utils.computeCountdownMinutes(r.arrivalTime) if minutes > 0: route_results.append(dict({'routeID':r.routeID, 'vehicleID':'unknown', 'minutes':str(minutes), 'arrivalTime':r.arrivalTime, 'destination':r.destination, })) # add the populated stop details to the response stop_dict.update({'route':route_results}); response_dict.update({'stop':stop_dict}) # cleanup the results #asynch.clean(sid) # stash results in the cache memcache.set(results_cache_key,response_dict,60) else: logging.debug('getarrivals : cash hit') response_dict['cached'] = True return response_dict
def stopRouteRequest(stopID, routeID, devStoreKey): logging.debug("Stop/Route Request started") # got fetch all of the data for this stop sid = stopID + str(devStoreKey) + str(time.time()) routes = asynch.aggregateBusesAsynch(sid, stopID, routeID) if routes is None: response_dict = { 'status': '0', 'timestamp': api_utils.getLocalTimestamp(), 'info': 'No routes found' } return response_dict response_dict = {'status': '0', 'timestamp': api_utils.getLocalTimestamp()} # there should only be results. we assume the results are sorted by time stop_dict = { 'stopID': stopID, } route_results = [] for r in routes: if not api_utils.inthepast(r.arrivalTime): route_results.append( dict({ 'routeID': r.routeID, 'vehicleID': 'unknown', 'minutes': str(api_utils.computeCountdownMinutes(r.arrivalTime)), 'arrivalTime': r.arrivalTime, 'destination': r.destination, })) # add the populated stop details to the response stop_dict.update({'route': route_results}) response_dict.update({'stop': stop_dict}) return response_dict
def stopRequest(stopID, devKey): response_dict = None # look for memcahced results results_cache_key = 'stopRequest::%s' % stopID response_dict = memcache.get(results_cache_key) if (response_dict is None): logging.debug("getarrivals : cache miss") response_dict = { 'status': '0', 'timestamp': api_utils.getLocalTimestamp() } # unique key to track this request t = str(time.time()).split('.')[0] sid = '%s::%s::%s' % (stopID, devKey, t) # fetch all of the data for this stop routes = asynch.aggregateBusesAsynch(sid, stopID) if routes is None or len(routes) == 0: response_dict['status'] = '-1' response_dict['description'] = 'No routes found for this stop' response_dict['stopID'] = stopID return response_dict # get the stop details stop_dict = { 'stopID': stopID, } # take the first 10 results. we assume the results are sorted by time #route_results = sorted(route_results, key=attrgetter('time')) route_results = [] for r in routes: minutes = api_utils.computeCountdownMinutes(r.arrivalTime) if minutes > 0: route_results.append( dict({ 'routeID': r.routeID, 'vehicleID': 'unknown', 'minutes': str(minutes), 'arrivalTime': r.arrivalTime, 'destination': r.destination, })) # add the populated stop details to the response stop_dict.update({'route': route_results}) response_dict.update({'stop': stop_dict}) # cleanup the results #asynch.clean(sid) # stash results in the cache memcache.set(results_cache_key, response_dict, 60) else: logging.debug('getarrivals : cash hit') response_dict['cached'] = True return response_dict