Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(102)

Side by Side Diff: chrome/common/extensions/docs/server2/cron_servlet.py

Issue 17816005: Doc server broken link detection (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: finalization Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 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 logging 5 import logging
6 import time 6 import time
7 import traceback 7 import traceback
8 8
9 from app_yaml_helper import AppYamlHelper 9 from app_yaml_helper import AppYamlHelper
10 from appengine_wrappers import ( 10 from appengine_wrappers import (
11 GetAppVersion, DeadlineExceededError, IsDevServer, logservice) 11 GetAppVersion, DeadlineExceededError, IsDevServer, logservice)
12 from branch_utility import BranchUtility 12 from branch_utility import BranchUtility
13 from caching_file_system import CachingFileSystem
14 from compiled_file_system import CompiledFileSystem 13 from compiled_file_system import CompiledFileSystem
15 from empty_dir_file_system import EmptyDirFileSystem 14 from empty_dir_file_system import EmptyDirFileSystem
15 from file_system_util import CreateURLsFromPaths
16 from github_file_system import GithubFileSystem 16 from github_file_system import GithubFileSystem
17 from host_file_system_creator import HostFileSystemCreator 17 from host_file_system_creator import HostFileSystemCreator
18 from object_store_creator import ObjectStoreCreator 18 from object_store_creator import ObjectStoreCreator
19 from render_servlet import RenderServlet 19 from render_servlet import RenderServlet
20 from server_instance import ServerInstance 20 from server_instance import ServerInstance
21 from servlet import Servlet, Request, Response 21 from servlet import Servlet, Request, Response
22 from subversion_file_system import SubversionFileSystem
23 import svn_constants 22 import svn_constants
24 from third_party.json_schema_compiler.memoize import memoize
25 23
26 class _SingletonRenderServletDelegate(RenderServlet.Delegate): 24 class _SingletonRenderServletDelegate(RenderServlet.Delegate):
27 def __init__(self, server_instance): 25 def __init__(self, server_instance):
28 self._server_instance = server_instance 26 self._server_instance = server_instance
29 27
30 def CreateServerInstanceForChannel(self, channel): 28 def CreateServerInstanceForChannel(self, channel):
31 return self._server_instance 29 return self._server_instance
32 30
33 class CronServlet(Servlet): 31 class CronServlet(Servlet):
34 '''Servlet which runs a cron job. 32 '''Servlet which runs a cron job.
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 server_instance = self._GetSafeServerInstance() 78 server_instance = self._GetSafeServerInstance()
81 79
82 def get_via_render_servlet(path): 80 def get_via_render_servlet(path):
83 request = Request(path, self._request.host, self._request.headers) 81 request = Request(path, self._request.host, self._request.headers)
84 delegate = _SingletonRenderServletDelegate(server_instance) 82 delegate = _SingletonRenderServletDelegate(server_instance)
85 return RenderServlet(request, delegate).Get() 83 return RenderServlet(request, delegate).Get()
86 84
87 def run_cron_for_dir(d, path_prefix=''): 85 def run_cron_for_dir(d, path_prefix=''):
88 success = True 86 success = True
89 start_time = time.time() 87 start_time = time.time()
90 # TODO(jshumway): use server_instance.host_file_system.Walk. 88 files = dict(
91 # TODO(kalman): delete me where it's set. 89 CreateURLsFromPaths(server_instance.host_file_system, d, path_prefix))
92 files = [f for f in server_instance.content_cache.GetFromFileListing(d)
93 if not f.endswith('/') and f != 'redirects.json']
94 logging.info('cron/%s: rendering %s files from %s...' % ( 90 logging.info('cron/%s: rendering %s files from %s...' % (
95 channel, len(files), d)) 91 channel, len(files), d))
96 try: 92 try:
97 for i, f in enumerate(files): 93 for i, path in enumerate(files):
98 error = None 94 error = None
99 path = '%s%s' % (path_prefix, f)
100 try: 95 try:
101 response = get_via_render_servlet(path) 96 response = get_via_render_servlet(path)
102 if response.status != 200: 97 if response.status != 200:
103 error = 'Got %s response' % response.status 98 error = 'Got %s response' % response.status
104 except DeadlineExceededError: 99 except DeadlineExceededError:
105 logging.error( 100 logging.error(
106 'cron/%s: deadline exceeded rendering %s (%s of %s): %s' % ( 101 'cron/%s: deadline exceeded rendering %s (%s of %s): %s' % (
107 channel, path, i + 1, len(files), traceback.format_exc())) 102 channel, path, i + 1, len(files), traceback.format_exc()))
108 raise 103 raise
109 except error: 104 except error:
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 host_file_system, 222 host_file_system,
228 object_store_creator) 223 object_store_creator)
229 return ServerInstance(channel, 224 return ServerInstance(channel,
230 object_store_creator, 225 object_store_creator,
231 host_file_system, 226 host_file_system,
232 app_samples_file_system, 227 app_samples_file_system,
233 '' if channel == 'stable' else '/%s' % channel, 228 '' if channel == 'stable' else '/%s' % channel,
234 compiled_host_fs_factory, 229 compiled_host_fs_factory,
235 branch_utility, 230 branch_utility,
236 host_file_system_creator) 231 host_file_system_creator)
OLDNEW
« no previous file with comments | « chrome/common/extensions/docs/server2/cron.yaml ('k') | chrome/common/extensions/docs/server2/file_system_util.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698