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)
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
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)
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()
def service_name(self): return app_by_local_name(self.namespace).title