Oxana Dashboard

{% include "_tabs.html" %}

{{ queue_key }}

{{ self.state_label() }} Concurrency: {{ self.concurrency_label() }} {% if self.has_concurrency_override() %} ({{ self.concurrency_default_label() }}) {% endif %}
{% if self.can_change_concurrency() %}
{% endif %} {% if self.is_paused() %}
{% else %}
{% endif %}
{% match queue_stats %} {% when Some with (qs) %}
Enqueued
{{ qs.enqueued|format_number }}
Busy
{{ busy|format_number }}
Processed
{{ qs.processed|format_number_i64 }}
Succeeded
{{ qs.succeeded|format_number_i64 }}
Failed
{{ qs.failed|format_number_i64 }}
Panicked
{{ qs.panicked|format_number_i64 }}
Latency
{{ qs.latency_s|format_latency }}
Processed/min
{{ qs.rate.processed_per_minute|format_rate_per_minute }}
Succeeded/min
{{ qs.rate.succeeded_per_minute|format_rate_per_minute }}
Failed/min
{{ qs.rate.failed_per_minute|format_rate_per_minute }}
Growth/min
{{ qs.rate.growth_per_minute|format_signed_rate_per_minute }}
ETA
{{ qs.rate.eta_s|format_eta_s }}
{% when None %} {% endmatch %} {% if !active_jobs.is_empty() %}

Currently Processing ({{ active_jobs.len() }})

{% for item in &active_jobs %}
{{ item.job_envelope.job.name }}
{{ item.job_envelope.id }}
Process: {{ item.process_id }}
Started: {{ item.job_envelope.meta.started_at|relative_time_micros_opt }}
Scheduled: {{ item.job_envelope.meta.scheduled_at|relative_time_micros }}
Retries: {{ item.job_envelope.meta.retries }}
{% let arg_pills = item.job_envelope.job.args|simple_args %} {% include "_arg_pills.html" %} {% if item.job_envelope.job.args|show_args_json %}
Arguments
{{ item.job_envelope.job.args|pretty_json }}
{% endif %} {% match item.job_envelope.meta.state %} {% when Some with (state) %} {% if state|has_args %} {% if state|show_job_progress %} {% let progress_started_at = item.job_envelope.meta.started_at %} {% include "_job_progress.html" %} {% else %}
State
{{ state|pretty_json }}
{% endif %} {% endif %} {% when None %} {% endmatch %}
{% endfor %}
{% endif %}

Enqueued

{% if total > 0 %} {{ self.range_start() }}–{{ self.range_end() }} of {{ total }} jobs {% else %} 0 jobs {% endif %}
{% if page > 1 %} ← Prev {% else %} ← Prev {% endif %} {% if has_next %} Next → {% else %} Next → {% endif %}
{% if jobs.is_empty() %}
No jobs in this queue
{% else %}
{% for job in &jobs %}
{{ job.job.name }} {{ job.id }}
Retries: {{ job.meta.retries }}
Created: {{ job.meta.created_at|relative_time_micros }}
Scheduled: {{ job.meta.scheduled_at|relative_time_micros }}
{% let arg_pills = job.job.args|simple_args %} {% include "_arg_pills.html" %} {% if job.job.args|show_args_json %}
Arguments
{{ job.job.args|pretty_json }}
{% endif %} {% match job.meta.state %} {% when Some with (state) %} {% if state|has_args %} {% if state|show_job_progress %} {% let progress_started_at = job.meta.started_at %} {% include "_job_progress.html" %} {% else %}
State
{{ state|pretty_json }}
{% endif %} {% endif %} {% when None %} {% endmatch %}
{% endfor %}
{{ self.range_start() }}–{{ self.range_end() }} of {{ total }}
{% if page > 1 %} ← Prev {% endif %} {% if has_next %} Next → {% endif %}
{% endif %}