def get(cls, queue_names=frozenset()): """Returns a 2-tuple: (list of push _QueueInfo, list of pull _QueueInfo).""" fetch_queue_request = taskqueue_service_pb.TaskQueueFetchQueuesRequest() fetch_queue_request.set_max_rows(1000) fetch_queue_response = taskqueue_service_pb.TaskQueueFetchQueuesResponse() apiproxy_stub_map.MakeSyncCall('taskqueue', 'FetchQueues', fetch_queue_request, fetch_queue_response) queue_stats_request = taskqueue_service_pb.TaskQueueFetchQueueStatsRequest() for queue in fetch_queue_response.queue_list(): queue_stats_request.add_queue_name(queue.queue_name()) queue_stats_response = ( taskqueue_service_pb.TaskQueueFetchQueueStatsResponse()) apiproxy_stub_map.MakeSyncCall('taskqueue', 'FetchQueueStats', queue_stats_request, queue_stats_response) for queue, queue_stats in zip( fetch_queue_response.queue_list(), queue_stats_response.queuestats_list()): if queue_names and queue.queue_name() not in queue_names: continue yield cls._from_queue_and_stats(queue, queue_stats)
def fetch_queue(self, app_id, http_data): """ Args: app_id: The application ID. http_data: The payload containing the protocol buffer request. Returns: A tuple of a encoded response, error code, and error detail. """ # TODO implement. request = taskqueue_service_pb.TaskQueueFetchQueuesRequest(http_data) response = taskqueue_service_pb.TaskQueueFetchQueuesResponse() return (response.Encode(), 0, "")
def test_get(self): fetch_queue_request = taskqueue_service_pb.TaskQueueFetchQueuesRequest( ) fetch_queue_request.set_max_rows(1000) fetch_queue_response = taskqueue_service_pb.TaskQueueFetchQueuesResponse( ) queue1 = fetch_queue_response.add_queue() queue1.set_queue_name('queue1') queue1.set_mode(taskqueue_service_pb.TaskQueueMode.PUSH) queue1.set_user_specified_rate('20/s') queue1.set_bucket_capacity(10) queue2 = fetch_queue_response.add_queue() queue2.set_queue_name('queue2') queue2.set_mode(taskqueue_service_pb.TaskQueueMode.PULL) queue2.set_user_specified_rate('20/s') queue2.set_bucket_capacity(10) apiproxy_stub_map.MakeSyncCall('taskqueue', 'FetchQueues', fetch_queue_request, mox.IgnoreArg()).WithSideEffects( lambda _, _1, _2, response: response .CopyFrom(fetch_queue_response)) queue_stats_request = taskqueue_service_pb.TaskQueueFetchQueueStatsRequest( ) queue_stats_request.add_queue_name('queue1') queue_stats_request.add_queue_name('queue2') queue_stats_response = ( taskqueue_service_pb.TaskQueueFetchQueueStatsResponse()) queue_stats1 = queue_stats_response.add_queuestats() queue_stats1.set_num_tasks(20) queue_stats1.set_oldest_eta_usec(-1) queue_stats2 = queue_stats_response.add_queuestats() queue_stats2.set_num_tasks(50) queue_stats2.set_oldest_eta_usec(1234567890) apiproxy_stub_map.MakeSyncCall('taskqueue', 'FetchQueueStats', queue_stats_request, mox.IgnoreArg()).WithSideEffects( lambda _, _1, _2, response: response .CopyFrom(queue_stats_response)) self.mox.ReplayAll() queues = list(taskqueue_utils.QueueInfo.get()) self.mox.VerifyAll() self.assertEqual('queue1', queues[0].name) self.assertEqual('queue2', queues[1].name)
def get_queue_names(app_id=None): """Returns a list with all non-special queue names for app_id.""" rpc = apiproxy_stub_map.UserRPC('taskqueue') request = taskqueue_service_pb.TaskQueueFetchQueuesRequest() response = taskqueue_service_pb.TaskQueueFetchQueuesResponse() if app_id: request.set_app_id(app_id) request.set_max_rows(100) queues = ['default'] try: rpc.make_call('FetchQueues', request, response) rpc.check_success() for queue in response.queue_list(): if (queue.mode() == taskqueue_service_pb.TaskQueueMode.PUSH and not queue.queue_name().startswith('__') and queue.queue_name() != 'default'): queues.append(queue.queue_name()) except Exception, e: logging.exception('Failed to get queue names: %s', str(e))