Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEATURE] Option to retry a failed task #1348

Open
eriktelepovsky opened this issue Jan 9, 2024 · 4 comments
Open

[FEATURE] Option to retry a failed task #1348

eriktelepovsky opened this issue Jan 9, 2024 · 4 comments

Comments

@eriktelepovsky
Copy link

Hi

Is your feature request related to a problem? Please describe.
I'm always frustrated when I need to manually execute a script to retry a failed task. I know there is a possibility to setup a failover and retry strategy, but sometimes it is more suitable to retry the task immediately on demand.

Describe the solution you'd like
It would be great if there is a button in the UI for the failed task to retry it. It would execute the task with the same parameters.

Describe alternatives you've considered
There is a django-celery-results app alternative which I can add a custom action to retry the specific tasks, but flower is much better tool. The only missing thing is the "retry button".

Additional context
Snippet I currently use:

def retry_task(task_id):    
    meta = celery_app.backend.get_task_meta(task_id)
    task = celery_app.tasks[meta['name']]
    task.apply_async(args=meta['args'], kwargs=meta['kwargs'])

Thank you in advance!

@dgarciams2s
Copy link

It would be great, really

@iamliamc
Copy link

I agree this would be really useful

@kooshan75
Copy link

Need this too, it'd be much appreciated.

@iamliamc
Copy link

iamliamc commented Sep 17, 2024

I ended up with something like this:

    def retry_task(self, task_id: str) -> AsyncResult:
        meta = self.celery_app.backend.get_task_meta(task_id)  # type: ignore
        task = self.celery_app.tasks[meta["name"]]
        results = task.apply_async(args=meta["args"], kwargs=meta["kwargs"])
        return AsyncResult(
            id=results.id,
            name=results.name,
            status=results.status,
            result=results.result,
            traceback=results.traceback,
            args=results.args,
            kwargs=results.kwargs,
            date_done=results.date_done,
        )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants