Отмена задачи в Celery
В коде tasks.py Есть задача:
def bar2(self, request):
progress_recorder = ProgressRecorder(self)
for i in range(7):
if self.is_aborted():
return 'Таск остановлен!'
username = request['request']
entry_list = Playlist.objects.values_list('url', flat=True).filter(author = User.objects.get(username = username))
print(entry_list)
task_id = self.request.id
print('Таск айди ' + str(task_id))
return task_id
Есть задача по её отмене:
@shared_task
def cancel_task(task_id):
ben = task_id
task = bar2.AsyncResult(ben)
if task.state in ['PENDING', 'STARTED', 'RETRYING', 'PROGRESS']:
task.revoke()
return 'Задача отменена'
else:
return 'Невозможно отменить задачу в текущем состоянии'
В views.py код выглядит следующим образом:
def pars1(request):
zen = request.user.username
task = bar2.delay({'request': str(zen)})
request.session['b'] = task.task_id
return redirect(reverse('lost'))
def parstimeoff(request):
ben = request.session['b']
cancel_task.delay(ben)
return redirect(reverse('lost'))
Запускаю задачу bar2(), потом её отмену cancel_task()
При срабатывании кода отмены пишет что задача отменена, но на самом деле она не отменена, в чем причина и как её отменить?
Источник: Stack Overflow на русском