Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Empty file added bin/common/__init__.py
Empty file.
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
from app.cached_items import cache_explore_context
ctxt = cache_explore_context()
ctxt = cache_explore_context()
File renamed without changes.
44 changes: 44 additions & 0 deletions bin/common/retry_decorator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import time
from functools import wraps

def retry(ExceptionToCheck, tries=4, delay=3, backoff=2, logger=None):
"""Retry calling the decorated function using an exponential backoff.

http://www.saltycrane.com/blog/2009/11/trying-out-retry-decorator-python/
original from: http://wiki.python.org/moin/PythonDecoratorLibrary#Retry

:param ExceptionToCheck: the exception to check. may be a tuple of
exceptions to check
:type ExceptionToCheck: Exception or tuple
:param tries: number of times to try (not retry) before giving up
:type tries: int
:param delay: initial delay between retries in seconds
:type delay: int
:param backoff: backoff multiplier e.g. value of 2 will double the delay
each retry
:type backoff: int
:param logger: logger to use. If None, print
:type logger: logging.Logger instance
"""
def deco_retry(f):

@wraps(f)
def f_retry(*args, **kwargs):
mtries, mdelay = tries, delay
while mtries > 1:
try:
return f(*args, **kwargs)
except ExceptionToCheck, e:
msg = "%s, Retrying in %d seconds..." % (str(e), mdelay)
if logger:
logger.warning(msg)
else:
print msg
time.sleep(mdelay)
mtries -= 1
mdelay *= backoff
return f(*args, **kwargs)

return f_retry # true decorator

return deco_retry
7 changes: 7 additions & 0 deletions bin/common/urllib.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@

import urllib2
from retry_decorator import retry

@retry(urllib2.URLError, tries=4, delay=3, backoff=2)
def urlopen_with_retry(url):
return urllib2.urlopen(url)
1 change: 1 addition & 0 deletions bin/crawler/common
311 changes: 0 additions & 311 deletions bin/crawler/courseNames

This file was deleted.

Loading