0
我正在使用Django,我想開始一些後臺任務。我找到了「Django後臺任務」庫。它幾乎包含了我需要的所有內容,但我無法找到如何在文檔(http://django-background-tasks.readthedocs.io/en/latest/)中的任何位置獲取任務(等待/正在運行/已完成)的狀態。如果有人能告訴我如何獲得任務的狀態,這對我非常有幫助。從Django獲取任務的狀態背景任務
我正在使用Django,我想開始一些後臺任務。我找到了「Django後臺任務」庫。它幾乎包含了我需要的所有內容,但我無法找到如何在文檔(http://django-background-tasks.readthedocs.io/en/latest/)中的任何位置獲取任務(等待/正在運行/已完成)的狀態。如果有人能告訴我如何獲得任務的狀態,這對我非常有幫助。從Django獲取任務的狀態背景任務
將任務插入數據庫表background_task
中,完成後將任務從background_task
表移至background_task_completedtask
表。您可以使用此信息創建視圖以獲取所有/特定任務的狀態。
例:
from background_task.models import Task
from background_task.models_completed import CompletedTask
from datetime import datetime
from django.utils import timezone
def get_status(request):
now = timezone.now()
# pending tasks will have `run_at` column greater than current time.
# Similar for running tasks, it shall be
# greater than or equal to `locked_at` column.
# Running tasks won't work with SQLite DB,
# because of concurrency issues in SQLite.
pending_tasks_qs = Task.objects.filter(run_at__gt=now)
running_tasks_qs = Task.objects.filter(locked_at__gte=now)
# Completed tasks goes in `CompletedTask` model.
# I have picked all, you can choose to filter based on what you want.
completed_tasks_qs = CompletedTask.objects.all()
# main logic here to return this as a response.
# just for test
print (pending_tasks_qs, running_tasks_qs, completed_tasks_qs)
return HttpResponse("ok")
最後,寄存器在urlpatterns的該視圖並檢查其狀態。