示例#1
0
    def run(self, tee_to_stdout=False):
        if self.currently_running:
            return

        try:
            output = TeeStringIO(
                other=sys.stdout) if tee_to_stdout else StringIO()

            self.currently_running = True
            self.pending = False
            self.save()

            providers = app_by_local_name(self.local_name).providers
            for provider in providers:
                if provider.class_path == self.provider_name:
                    break
            else:
                raise AssertionError

            method = getattr(provider, self.method_name)

            self.metadata = method(self.metadata, output)
        except Exception, e:
            if output.getvalue():
                output.write("\n\n")
            traceback.print_exc(file=output)
            logger.exception('Batch %r threw an uncaught exception' %
                             self.title)
示例#2
0
 def run(self, tee_to_stdout=False):
     if self.currently_running:
         return
     
     try:
         output = TeeStringIO(other=sys.stdout) if tee_to_stdout else StringIO()
         
         self.currently_running = True
         self.pending = False
         self.save()
         
         providers = app_by_local_name(self.local_name).providers
         for provider in providers:
             if provider.class_path == self.provider_name:
                 break
         else:
             raise AssertionError
         
         method = getattr(provider, self.method_name)
         
         self.metadata = method(self.metadata, output)
     except Exception, e:
         if isinstance(e, IntegrityError):
             transaction.rollback()
         if output.getvalue():
             output.write("\n\n")
         traceback.print_exc(file=output)
         if self.last_run_failed:
             log = logger.info('Batch %r threw an uncaught exception (repeat failure)' % self.title,
                               exc_info=True)
         else:
             logger.exception('Batch %r threw an uncaught exception' % self.title)
         self.last_run_failed = True
示例#3
0
 def run(self, tee_to_stdout=False):
     #if self.currently_running:
     #    return
     
     try:
         output = TeeStringIO(other=sys.stdout) if tee_to_stdout else StringIO()
         
         self.currently_running = True
         self.pending = False
         self.save()
         
         
         providers = app_by_local_name(self.local_name).providers
         for provider in providers:
             if provider.class_path == self.provider_name:
                 break
         else:
             raise AssertionError
         
         method = getattr(provider, self.method_name)
         
         self.metadata = method(self.metadata, output)
     except Exception, e:
         if output.getvalue():
             output.write("\n\n")
         traceback.print_exc(file=output)
         logger.exception('Batch %r threw an uncaught exception' % self.title)
示例#4
0
    def run(self, tee_to_stdout=False):
        if self.currently_running:
            return

        try:
            output = TeeStringIO(
                other=sys.stdout) if tee_to_stdout else StringIO()

            self.currently_running = True
            self.pending = False
            self.save()

            providers = app_by_local_name(self.local_name).providers
            for provider in providers:
                if provider.class_path == self.provider_name:
                    break
            else:
                raise AssertionError

            method = getattr(provider, self.method_name)

            self.metadata = method(self.metadata, output)
        except Exception as e:
            if isinstance(e, DatabaseError):
                transaction.rollback()
            if output.getvalue():
                output.write("\n\n")
            traceback.print_exc(file=output)
            if self.last_run_failed:
                log = logger.info(
                    'Batch %r threw an uncaught exception (repeat failure)' %
                    self.title,
                    exc_info=True)
            else:
                logger.exception('Batch %r threw an uncaught exception' %
                                 self.title)
            self.last_run_failed = True
        else:
            self.last_run_failed = False
        finally:
            self.log = output.getvalue()
            self.last_run = datetime.utcnow()
            self.currently_running = False
            self.save()
示例#5
0
 def service_name(self):
     return app_by_local_name(self.namespace).title