celery-smartbase
is an extension and improvement of the popular celery
PyPI package. It provides features to avoid duplicates for tasks that are pending or running and to see the "pending" tasks as well in the "jobs" Django model when you integrate Celery with Django. Although this package is improved to work with Django, users can modify the features slightly to make it work with any Python framework, not just Django.
- Celery SmartBase
- Features
- SmartBase Class
- Requirements
- Installation
- Usage
- Contributing
- License
- Acknowledgments
- Avoid Duplicate Tasks: Prevents the creation of duplicate tasks that are either pending or running.
- View Pending Tasks: Allows you to see the "pending" tasks in the "jobs" Django model when you integrate Celery with Django.
These features are developed inside an extension of the BaseTask
class of the existing Celery Python package. The extension class is called SmartBase
.
The SmartBase
class is an extension of the BaseTask
class from the Celery package. Here is the code for the SmartBase
class:
class SmartBase(BaseTask):
...
[Include the full code of the SmartBase class here]
- Django
- djangorestframework
- django-model-utils
- django-celery-results
- django-celery-beat
- kombu
- celery
To install the celery-smartbase
package, run the following command:
pip install celery-smartbase
To use the celery-smartbase
package, you need to follow these steps:
-
Install the
celery-smartbase
package using pip. -
In your Django project, create a
tasks.py
file inside your app directory. -
In the
tasks.py
file, import theSmartBase
class from thecelery_smartbase
package and define your tasks using theSmartBase
class.
Here is an example of a tasks.py
file:
from celery import shared_task
from celery_smartbase import SmartBase
@shared_task(base=SmartBase, name='add')
def add(x, y):
return x + y
In this example, the add
task is defined using the @shared_task
decorator with SmartBase
as the base class.
- Start the Celery worker to process the tasks.
celery -A myproject worker --loglevel=info
Replace myproject
with the name of your Django project.
If you would like to contribute to the celery-smartbase
package, please...
[Include information on how others can contribute to your package]
The celery-smartbase
package is licensed under the...
[Include information about the license of your package]
[Include any acknowledgments or credits you would like to include]