Пример #1
0
def reformat_job_data(job: Job):
    """
    Create serialized version of Job which can be consumed by DataTable
    (RQ provides to_dict) including origin(queue), created_at, data, description,
    enqueued_at, started_at, ended_at, result, exc_info, timeout, result_ttl,
     failure_ttl, status, dependency_id, meta, ttl

    :param job: Job Instance need to be serialized
    :return: serialized job
    """
    serialized_job = job.to_dict()
    return {
        "job_info": {
            "job_id": validate_job_data(job.get_id()),
            "job_description": validate_job_data(serialized_job.get('description')),
            "job_exc_info": validate_job_data(zlib.decompress(serialized_job.get('exc_info')).decode('utf-8')
                                              if serialized_job.get('exc_info') is not None
                                              else None),
            "job_status": validate_job_data(serialized_job.get('status')),
            "job_queue": validate_job_data(serialized_job.get('origin')),
            "job_created_time_humanize": validate_job_data(serialized_job.get('created_at'),
                                                           humanize_func=humanize.naturaltime,
                                                           with_utcparse=True,
                                                           relative_to_now=True),
            "job_enqueued_time_humanize": validate_job_data(serialized_job.get('enqueued_at'),
                                                           humanize_func=humanize.naturaltime,
                                                           with_utcparse=True,
                                                           relative_to_now=True),
            "job_ttl": validate_job_data(serialized_job.get('ttl'), default='Infinite', append_s=True),
            "job_timeout": validate_job_data(serialized_job.get('timeout'), default='180s', append_s=True),
            "job_result_ttl": validate_job_data(serialized_job.get('result_ttl'), default='500s', append_s=True),
            "job_fail_ttl": validate_job_data(serialized_job.get('failure_ttl'), default='1yr', append_s=True),
        },
    }
Пример #2
0
def reformat_job_data(job: Job):
    """
    Create serialized version of Job which can be consumed by DataTable
    (RQ provides to_dict) including origin(queue), created_at, data, description,
    enqueued_at, started_at, ended_at, result, exc_info, timeout, result_ttl,
     failure_ttl, status, dependency_id, meta, ttl

    :param job: Job Instance need to be serialized
    :return: serialized job
    """
    serialized_job = job.to_dict()
    # remove decompression
    serialized_job['exc_info'] = job.exc_info
    return {
        "job_info": {
            "job_id":
            job.id,
            "job_func":
            job.func_name,
            "job_description":
            serialized_job['description'],
            "job_exc_info":
            str(serialized_job['exc_info']),
            "job_status":
            serialized_job['status'],
            "job_queue":
            serialized_job['origin'],
            "job_enqueued_at":
            serialized_job['enqueued_at'],
            "job_created_at":
            serialized_job['created_at'],
            "job_created_time_humanize":
            humanize.naturaltime(
                utcparse(serialized_job['created_at']).timestamp() -
                datetime.now().timestamp()),
            "job_enqueued_time_humanize":
            humanize.naturaltime(
                utcparse(serialized_job['enqueued_at']).timestamp() -
                datetime.now().timestamp()),
            "job_ttl":
            "Infinite" if job.get_ttl() is None else job.get_ttl(),
            "job_timeout":
            "Infinite" if job.timeout is None else job.timeout,
            "job_result_ttl":
            '500s' if job.result_ttl is None else job.result_ttl,
            "job_fail_ttl":
            '1y' if job.failure_ttl is None else job.failure_ttl,
        },
    }