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

Add support for DjangoTask's delay_on_commit and apply_async_on_commit methods #157

Open
federicobond opened this issue Apr 29, 2024 · 3 comments
Labels
bug Something isn't working

Comments

@federicobond
Copy link
Contributor

Celery 5.4 introduced some shortcuts for Django projects using a custom task class. This new DjangoTask base class adds the following methods:

  • delay_on_commit
  • apply_async_on_commit

https://docs.celeryq.dev/en/stable/django/first-steps-with-django.html#trigger-tasks-at-the-end-of-the-database-transaction

Not sure what's the best way to support app.task/shared_task returning instances of this base class but we can start by adding stubs for celery.contrib.django.task.DjangoTask (see API reference).

@sbdchd sbdchd added the bug Something isn't working label Apr 29, 2024
@federicobond
Copy link
Contributor Author

federicobond commented Feb 24, 2025

Initial support for DjangoTask is in #173.

A small mypy plugin can fill in the gap by tweaking the return type of the shared_task and Celery.task decorators. @sbdchd, would you be interested in hosting such plugin in this repo if I submit a pull request?

Edit: this is a minimalistic version of the plugin.

@sbdchd
Copy link
Owner

sbdchd commented Feb 28, 2025

I'm trying to keep these types free from mypy plugins so that pyright and similar can still function

how's the experience for non-mypy type checkers when the mypy plugin is setup?

@federicobond
Copy link
Contributor Author

For non-mypy typecheckers, an explicit cast on the task would be needed to use the methods defined in DjangoTask. It does not affect the experience in any other way.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants