OLD | NEW |
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
| 5 import time |
| 6 |
| 7 from appengine_wrappers import taskqueue |
5 from cron_servlet import CronServlet | 8 from cron_servlet import CronServlet |
6 from instance_servlet import InstanceServlet | 9 from instance_servlet import InstanceServlet |
7 from patch_servlet import PatchServlet | 10 from patch_servlet import PatchServlet |
| 11 from refresh_servlet import RefreshServlet |
8 from servlet import Servlet, Request, Response | 12 from servlet import Servlet, Request, Response |
9 from test_servlet import TestServlet | 13 from test_servlet import TestServlet |
10 | 14 |
| 15 |
11 _DEFAULT_SERVLET = InstanceServlet.GetConstructor() | 16 _DEFAULT_SERVLET = InstanceServlet.GetConstructor() |
| 17 |
| 18 |
| 19 _FORCE_CRON_TARGET = 'force_cron' |
| 20 |
| 21 |
12 _SERVLETS = { | 22 _SERVLETS = { |
13 'cron': CronServlet, | 23 'cron': CronServlet, |
14 'patch': PatchServlet, | 24 'patch': PatchServlet, |
| 25 'refresh': RefreshServlet, |
15 'test': TestServlet, | 26 'test': TestServlet, |
16 } | 27 } |
17 | 28 |
| 29 |
18 class Handler(Servlet): | 30 class Handler(Servlet): |
19 def Get(self): | 31 def Get(self): |
20 path = self._request.path | 32 path = self._request.path |
21 | 33 |
22 if path.startswith('_'): | 34 if path.startswith('_'): |
23 servlet_path = path[1:] | 35 servlet_path = path[1:] |
24 if not '/' in servlet_path: | 36 if not '/' in servlet_path: |
25 servlet_path += '/' | 37 servlet_path += '/' |
26 servlet_name, servlet_path = servlet_path.split('/', 1) | 38 servlet_name, servlet_path = servlet_path.split('/', 1) |
| 39 if servlet_name == _FORCE_CRON_TARGET: |
| 40 queue = taskqueue.Queue() |
| 41 queue.purge() |
| 42 time.sleep(2) |
| 43 queue.add(taskqueue.Task(url='/_cron')) |
| 44 return Response.Ok('Cron job started.') |
| 45 if servlet_name == 'enqueue': |
| 46 queue = taskqueue.Queue() |
| 47 queue.add(taskqueue.Task(url='/%s'%servlet_path)) |
| 48 return Response.Ok('Task enqueued.') |
27 servlet = _SERVLETS.get(servlet_name) | 49 servlet = _SERVLETS.get(servlet_name) |
28 if servlet is None: | 50 if servlet is None: |
29 return Response.NotFound('"%s" servlet not found' % servlet_path) | 51 return Response.NotFound('"%s" servlet not found' % servlet_path) |
30 else: | 52 else: |
31 servlet_path = path | 53 servlet_path = path |
32 servlet = _DEFAULT_SERVLET | 54 servlet = _DEFAULT_SERVLET |
33 | 55 |
34 return servlet( | 56 return servlet(Request(servlet_path, |
35 Request(servlet_path, self._request.host, self._request.headers)).Get() | 57 self._request.host, |
| 58 self._request.headers, |
| 59 self._request.arguments)).Get() |
OLD | NEW |