def METHOD_NAME(self, account_id, issn):
    self._write_to_logger("Processing ISSN:{x} for Account:{y}".format(y=account_id, x=issn))
    state = HarvestState.find_by_issn(account_id, issn)
    # if this issn is suspended, don't process it
    if state.suspended:
        return
    Report.set_state_by_issn(issn, state)
    try:
        # get all the plugins that we need to run
        harvesters = app.config.get("HARVESTERS", [])
        for h in harvesters:
            p = plugin.load_class(h)(self.logger)
            p_name = p.get_name()
            lh = state.get_last_harvest(p_name)
            if lh is None:
                lh = app.config.get("INITIAL_HARVEST_DATE")
            Report.set_start_by_issn(p_name, issn, lh)
            for article, lhd in p.iterate(issn, lh):
                saved = self.process_article(account_id, article)
                Report.increment_articles_processed(p_name)
                # if the above worked, then we can update the harvest state
                if saved:
                    state.set_harvested(p_name, lhd)
                    Report.increment_articles_saved_successfully(p_name)
    except Exception:
        self._write_to_logger("Exception Processing ISSN:{x} for Account:{y} ".format(y=account_id, x=issn))
        raise
    finally:
        # once we've finished working with this issn, we should update the state
        # this is especially true if there is an exception, as this will allow us
        # to record where we got to, without having to do a save after each article
        # create
        state.save(blocking=True)
        self._write_to_logger("Saved state record for ISSN:{x} for Account:{y}".format(y=account_id, x=issn))