예제 #1
0
 def post(self):
   product_key_name = self.request.get('product_key_name')
   count = int(self.request.get('count'))
   retries = int(self.request.get('retries'))
   date = str_to_date(self.request.get('date_string'))
   frequency = self.request.get('frequency')
   
   logging.info('Fetching details for %s , frequency: %s' %(product_key_name,frequency))
   
   #Create empty renderer 
   renderer = ProductRenderer.new(product_key_name,frequency, date,count = count)
   
   asin = AmazonURLParser.extract_asin(product_key_name)
   locale = AmazonURLParser.get_locale(product_key_name)
   renderer = AmazonProductFetcher.get_product_details(asin, renderer,locale)
   
   if renderer is not None: #If all details were fetched successfully
     renderer.put(_storage=[MEMCACHE,DATASTORE])
   else:
     if retries <  MAX_PRODUCT_INFO_RETRIES:
       retries += 1
       logging.error('Error saving product: %s, adding to queue again, retries: %s' %(product_key_name,retries))
       enqueue_renderer_info(product_key_name,count,frequency,date,
                                       countdown = 60, retries = retries)
     else:
       logging.critical('Max retries reached for product: %s' %product_key_name)
       renderer = ProductRenderer.new(product_key_name,frequency,
                                       date, count = count,is_banned=True)
       renderer.log_properties()
       renderer.put(_storage=[MEMCACHE,DATASTORE])
예제 #2
0
    def post(self):
        product_key_name = self.request.get('product_key_name')
        count = int(self.request.get('count'))
        retries = int(self.request.get('retries'))
        date = str_to_date(self.request.get('date_string'))
        frequency = self.request.get('frequency')

        logging.info('Fetching details for %s , frequency: %s' %
                     (product_key_name, frequency))

        #Create empty renderer
        renderer = ProductRenderer.new(product_key_name,
                                       frequency,
                                       date,
                                       count=count)

        asin = AmazonURLParser.extract_asin(product_key_name)
        locale = AmazonURLParser.get_locale(product_key_name)
        renderer = AmazonProductFetcher.get_product_details(
            asin, renderer, locale)

        if renderer is not None:  #If all details were fetched successfully
            renderer.put(_storage=[MEMCACHE, DATASTORE])
        else:
            if retries < MAX_PRODUCT_INFO_RETRIES:
                retries += 1
                logging.error(
                    'Error saving product: %s, adding to queue again, retries: %s'
                    % (product_key_name, retries))
                enqueue_renderer_info(product_key_name,
                                      count,
                                      frequency,
                                      date,
                                      countdown=60,
                                      retries=retries)
            else:
                logging.critical('Max retries reached for product: %s' %
                                 product_key_name)
                renderer = ProductRenderer.new(product_key_name,
                                               frequency,
                                               date,
                                               count=count,
                                               is_banned=True)
                renderer.log_properties()
                renderer.put(_storage=[MEMCACHE, DATASTORE])
예제 #3
0
파일: model.py 프로젝트: frankk00/TweetHit
 def asin(self):
   return AmazonURLParser.extract_asin(self.final_url)
예제 #4
0
파일: model.py 프로젝트: frankk00/TweetHit
 def asin(self):
     return AmazonURLParser.extract_asin(self.final_url)