Skip to main content

Management of user-triggered asynchronous tasks in Django projects

Project description

PyPI Travis Codecov Documentation Supported Python versions License

django-user-tasks is a reusable Django application for managing user-triggered asynchronous tasks. It provides a status page for each such task, which includes a meaningful progress indicator if the task is currently being executed and provides any appropriate text and/or links for output once the task is complete.

In Open edX, such tasks include operations such as exporting or importing a course, sending an email to all the students in a course, uploading a video, and other tasks which often take too long to perform during a single web request (as outlined in OEP-3). However, this has been written with the intention of being useful in a variety of Django projects outside the Open edX platform as well.

Note that this library was created as a consolidation of lessons learned from implementing such tasks in various parts of the Open edX code base. They don’t yet all use this library, but the plan is to over time refactor many of them to do so.

Overview

django-user-tasks is currently a wrapper for Celery (although the hope is that it could also be extended to also support channels and other asynchronous task queues). By extending the provided UserTask class (or adding UserTaskMixin to an existing Task subclass) and providing a user_id task argument, the task’s status is stored in a database table separate from the Celery broker and result store. This UserTaskStatus model allows for full database queries of the tasks that users are most likely to care about while not imposing any restrictions on the Celery configuration most appropriate for the site’s overall needs for asynchronous task processing.

Most of the status updating is handled automatically via Celery’s signals mechanism, but it can be enhanced by:

  • Overriding the UserTaskMixin methods such as generate_name and calculate_total_steps for particular types of tasks

  • Calling some of the UserTaskStatus methods like increment_completed_steps and set_state from the task implementation

  • Saving task output as instances of the UserTaskArtifact model

Documentation

The full documentation is at https://django-user-tasks.readthedocs.org.

License

The code in this repository is licensed under the Apache Software License 2.0 unless otherwise noted.

Please see LICENSE.txt for details.

How To Contribute

Contributions are very welcome.

Please read How To Contribute for details.

Even though they were written with edx-platform in mind, the guidelines should be followed for Open edX code in general.

Reporting Security Issues

Please do not report security issues in public. Please email security@edx.org.

Getting Help

Have a question about this repository, or about Open edX in general? Please refer to this list of resources if you need any assistance.

Change Log

Unreleased

[0.1.1] - 2016-10-11

Changed

  • Fix Travis configuration for PyPI deployments.

  • Switch from the Read the Docs Sphinx theme to the Open edX one for documentation.

[0.1.0] - 2016-10-07

Added

  • First attempt to release on PyPI.

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-user-tasks-0.1.1.tar.gz (21.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_user_tasks-0.1.1-py2.py3-none-any.whl (22.6 kB view details)

Uploaded Python 2Python 3

File details

Details for the file django-user-tasks-0.1.1.tar.gz.

File metadata

File hashes

Hashes for django-user-tasks-0.1.1.tar.gz
Algorithm Hash digest
SHA256 25ae56318e1d8c129ee0120f58c346a10ed11d6876f7568637bd0aac237d9866
MD5 a0864f8b971871c711495a37adbd14e4
BLAKE2b-256 7a2cc402b469db293102892bf4fd2ce52c6b242ead0e8fb8a6b0581c49c2b758

See more details on using hashes here.

File details

Details for the file django_user_tasks-0.1.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for django_user_tasks-0.1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 9bdb8a34e541ac8b21db1c2873192cf77e21a24076e5ff32e0486c645e3cc689
MD5 251bbe2858967c24f5e7b7c0f53cdba4
BLAKE2b-256 5aa081a52f77e8dd8b37833eebda8d25911f2db81da3408746bb7c2062bab13b

See more details on using hashes here.

Supported by

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