| #!/usr/bin/env python |
| # |
| # Copyright 2007 Google Inc. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| """A handler that displays queue information for the application.""" |
| |
| |
| |
| from google.appengine.api import apiproxy_stub_map |
| from google.appengine.api.taskqueue import taskqueue_service_pb |
| |
| from google.appengine.tools.devappserver2.admin import admin_request_handler |
| from google.appengine.tools.devappserver2.admin import taskqueue_utils |
| |
| |
| class TaskQueueQueuesHandler(admin_request_handler.AdminRequestHandler): |
| """A handler that displays queue information for the application.""" |
| |
| def get(self): |
| push_queues = [] |
| pull_queues = [] |
| for queue_info in taskqueue_utils.QueueInfo.get(): |
| if queue_info.mode == taskqueue_service_pb.TaskQueueMode.PUSH: |
| push_queues.append(queue_info) |
| elif queue_info.mode == taskqueue_service_pb.TaskQueueMode.PULL: |
| pull_queues.append(queue_info) |
| else: |
| assert 0, 'unexpected queue type: %r' % queue_info.mode |
| |
| self.response.write(self.render('taskqueue_queues.html', |
| {'push_queues': push_queues, |
| 'pull_queues' : pull_queues})) |
| |
| def _purge_queue(self, queue_name): |
| request = taskqueue_service_pb.TaskQueuePurgeQueueRequest() |
| response = taskqueue_service_pb.TaskQueuePurgeQueueResponse() |
| request.set_queue_name(queue_name) |
| apiproxy_stub_map.MakeSyncCall('taskqueue', |
| 'PurgeQueue', |
| request, |
| response) |
| |
| def post(self): |
| """Handle modifying actions and redirect to a GET page.""" |
| queue_name = self.request.get('queue') |
| |
| if self.request.get('action:purgequeue'): |
| self._purge_queue(queue_name) |
| self.redirect(self.request.path_url) |