Skip to main content

Simple Django & celery Integration

Project description

Django Tasks Manager

A super simple Django & Celery integration - This library is actively supported by AppSeed.

Features:

  • Create/Revoke Celery Tasks
  • View LOGS & Output
  • Minimal Configuration
  • Installation via PyPi
  • Available TASKS (provided as starting samples)
    • users_in_db() - List all registered users
    • execute_script() - let users execute the scripts defined in CELERY_SCRIPTS_DIR (configuration parameter)

Something is not yet provided? Open a PR on the repository or contribute via a fork.


How to use it


Install the package via PIP

$ pip install django-tasks-manager
// OR
$ pip install git+https://github.com/app-generator/django-tasks-manager.git

Include the new routing

# core/urls.py

from django.urls import path, include     # <-- UPDATE: Add 'include' HELPER

urlpatterns = [
    ...
    
    path("", include("django_tm.urls")),  # <-- New Routes

    ...
]

Create Scrips & LOGS directories - The Recomended place is in the root of the project:

$ mkdir celery_scripts # Used in Settings -> CELERY_SCRIPTS_DIR
$ mkdir celery_logs    # Used in Settings -> CELERY_SCRIPTS_DIR
  • Make sure the user that executes the app has write permission.
  • Copy the sample scripts in the scripts directory.
  • All scripts will be available in the UI, ready to be executed by the manager.

Update Configuration: Include the new APPS

INSTALLED_APPS = [
    ...                  
    'django_tm',              # Django Tasks Manager   # <-- NEW
    'django_celery_results',  # Django Celery Results  # <-- NEW
]

Update Configuration: Include the new templates

TEMPLATE_DIR_TASKS = os.path.join(BASE_DIR, "django_tm/templates")     # <-- NEW

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',   
        'DIRS': [TEMPLATE_DIR_TASKS],                                  # <-- Updated 
        'APP_DIRS': True,
    },
]

Update Configuration: New CELERY_ Section

#############################################################
# Celery configurations
# https://docs.celeryq.dev/en/stable/django/first-steps-with-django.html

# BASE_DIR points to the ROOT of the project
# Note: make sure you have 'os' object imported
BASE_DIR = os.path.dirname(os.path.dirname(__file__))

# Working Directories required write permission
CELERY_SCRIPTS_DIR        = os.path.join(BASE_DIR, "celery_scripts" )
CELERY_LOGS_DIR           = os.path.join(BASE_DIR, "celery_logs"    )

CELERY_BROKER_URL         = os.environ.get("CELERY_BROKER", "redis://localhost:6379")
CELERY_RESULT_BACKEND     = os.environ.get("CELERY_BROKER", "redis://localhost:6379")

CELERY_TASK_TRACK_STARTED = True
CELERY_TASK_TIME_LIMIT    = 30 * 60
CELERY_CACHE_BACKEND      = "django-cache"
CELERY_RESULT_BACKEND     = "django-db"
CELERY_RESULT_EXTENDED    = True
CELERY_RESULT_EXPIRES     = 60*60*24*30 # Results expire after 1 month
CELERY_ACCEPT_CONTENT     = ["json"]
CELERY_TASK_SERIALIZER    = 'json'
CELERY_RESULT_SERIALIZER  = 'json'

#############################################################
#############################################################

Start the App

$ # Set up the database
$ python manage.py makemigrations
$ python manage.py migrate
$
$ # Create the superuser
$ python manage.py createsuperuser
$
$ # Start the application (development mode)
$ python manage.py runserver # default port 8000

Access the Tasks page: http://127.0.0.1:8000/tasks


Start the Celery Manager (another terminal)

Note: Redis server is expected on port 6379 (default). In case Redis runs on other PORT, please update the configuration: CELERY_BROKER_URL and CELERY_RESULT_BACKEND.

$ celery --app=django_tm.celery.app worker --loglevel=info 

Screens

View all tasks

Django Tasks Manager - View All Tasks.


View Task LOG

Django Tasks Manager - View Task LOG.


View Running Tasks

Django Tasks Manager - View Running Tasks.



Django Tasks Manager - Open-source library provided by AppSeed

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-tasks-manager-0.0.4.tar.gz (12.7 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page