如何以编程方式删除 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.name
而 obj.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
应该是唯一的。
我有一些后台任务,当我从视图中 运行 一些函数并且后台任务在 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.name
而 obj.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
应该是唯一的。