def on_post(self, req, resp): sequencer_task = Status.get_status(self.session, 'SEQUENCER_TASK_ID') if sequencer_task.value is None: # 3. IF NOT RUNNING: set task id is status table sequencer_task.value = "123" sequencer_task.save(self.session) harvester = PolkascanHarvesterService( db_session=self.session, type_registry=TYPE_REGISTRY, type_registry_file=TYPE_REGISTRY_FILE ) result = harvester.start_sequencer() sequencer_task.value = None sequencer_task.save(self.session) # 4. IF RUNNING: check if task id is active else: # task_result = AsyncResult(sequencer_task) # task_result = {'status': task_result.status, 'result': task_result.result} sequencer_task.value = None sequencer_task.save(self.session) result = 'Busy' self.session.commit() resp.media = { 'result': result }
def start_sequencer(self): sequencer_task = Status.get_status(self.session, 'SEQUENCER_TASK_ID') if sequencer_task.value: task_result = AsyncResult(sequencer_task.value) if not task_result or task_result.ready(): sequencer_task.value = None sequencer_task.save(self.session) if sequencer_task.value is None: sequencer_task.value = self.request.id sequencer_task.save(self.session) harvester = PolkascanHarvesterService( db_session=self.session, type_registry=TYPE_REGISTRY, type_registry_file=TYPE_REGISTRY_FILE) try: result = harvester.start_sequencer() except BlockIntegrityError as e: result = {'result': str(e)} sequencer_task.value = None sequencer_task.save(self.session) self.session.commit() # Check if analytics data need to be generated #start_generate_analytics.delay() return result else: return {'result': 'Sequencer already running'}