def _end_job(survey_job: SurveyJob, success=True) -> SurveyJob: """Ends survey job, setting success and time properties.""" survey_job.success = success survey_job.end_time = timezone.now() survey_job.save() return survey_job
def requeue_survey_job(last_job: SurveyJob) -> None: """Queues a new survey job. The new survey job will have num_retries one greater than last_job.num_retries. """ num_retries = last_job.num_retries + 1 new_job = SurveyJob(num_retries=num_retries, source_type=last_job.source_type) if new_job.num_retries == 1: new_job.ram_amount = 4096 elif new_job.num_retries in [2, 3]: new_job.ram_amount = 16384 else: new_job.ram_amount = 1024 new_job.save() keyvalues = SurveyJobKeyValue.objects.filter(survey_job=last_job) for keyvalue in keyvalues: SurveyJobKeyValue.objects.get_or_create( survey_job=new_job, key=keyvalue.key, value=keyvalue.value, ) logger.debug( "Requeuing SurveyJob which had ID %d with a new SurveyJob with ID %d.", last_job.id, new_job.id, ) try: if send_job(SurveyJobTypes.SURVEYOR, job=new_job, is_dispatch=True): last_job.retried = True last_job.success = False last_job.retried_job = new_job last_job.save() else: # Can't communicate with Batch just now, leave the job for a later loop. new_job.delete() except Exception: logger.error( "Failed to requeue Survey Job which had ID %d with a new Surevey Job with ID %d.", last_job.id, new_job.id, ) # Can't communicate with AWS just now, leave the job for a later loop. new_job.delete() return True
def _end_job(survey_job: SurveyJob, success=True): survey_job.success = success survey_job.end_time = timezone.now() survey_job.save()