def _report_failure(job_scope: JobScope, start_time: float, exc: Exception, **kwargs: Any): """Report task stats when task fails.""" end_time = time.time() job_scope.running_time = math.ceil(end_time - start_time) job_scope.datapoint_count = kwargs.get('partial_datapoint_count') ErrorInspector.inspect(exc, job_scope.ad_account_id, {'job_scope': job_scope}) if isinstance(exc, FacebookRequestError): failure_status, failure_bucket = FacebookApiErrorInspector( exc).get_status_and_bucket() else: failure_status, failure_bucket = ExternalPlatformJobStatus.GenericError, FailureBucket.Other # No entity type means we don't know what table to target if failure_bucket == FailureBucket.InaccessibleObject and job_scope.entity_type is not None: set_inaccessible_entity_task.delay(job_scope) report_job_status_task.delay(failure_status, job_scope) PlatformTokenManager.from_job_scope( job_scope).report_usage_per_failure_bucket(job_scope.token, failure_bucket) SweepStatusTracker(job_scope.sweep_id).report_status(failure_bucket) _send_measurement_task_runtime(job_scope, failure_bucket)
def _report_success(job_scope: JobScope, start_time: float, ret_value: Any): """Report task stats when successful.""" end_time = time.time() job_scope.running_time = math.ceil(end_time - start_time) if isinstance(ret_value, int): job_scope.datapoint_count = ret_value report_job_status_task.delay(ExternalPlatformJobStatus.Done, job_scope) SweepStatusTracker(job_scope.sweep_id).report_status(FailureBucket.Success) _send_measurement_task_runtime(job_scope, FailureBucket.Success)