如何以编程方式删除 django 后台任务?

How to delete django background task programmatically?

我有一些后台任务,当我从视图中 运行 一些函数并且后台任务在 admin/database 中注册时将被调用。哪个工作正常,但我想要的是,如果我删除任务,那么与此任务相关的后台任务 pk 也应该被删除。

我该怎么做?

tasks.py

@background(schedule=20)
def my_task(pk):
    task = Task.objects.get(pk=pk)
    # my tasks 

views.py

    def some_process():
        pk = obj.pk
        my_task(pk, repeat=3600, repeat_until='some_datetime',verbose_name="{}".format(obj.name))
    
   def delete_task():
       obj = MyModel.objects.get(pk=obj.pk)
       obj.delete()
       # while this object gets deleted I want to delete the background task related to this object
       background_task_of_this_obj= BackgroundTask.objects.get(pk=obj.pk).delete()

好吧,我把这两个任务都删除了。

在创建 background_task 时,verbose_name 是基于 obj.nameobj.name 是独一无二的。所以我使用 verbose_name.

获取后台任务
from background_task.models import Task as BTask
def delete_task():
     obj = MyModel.objects.get(pk=obj.pk)
     b_task = Btask.objects.get(verbose_name=obj.name)
     b_task.delete()
     obj.delete()
   

为此 obj.name 应该是唯一的。