Skip to main content

Celery tasks supporting the operations of edX's ecommerce service

Project description

The Celery tasks contained herein are used to implement asynchronous order fulfillment and other features requiring the asynchronous execution of many small, common operations.

Prerequisites

  • Python 3.x

  • Celery 4.x

  • RabbitMQ 3.5.x

Getting Started

Most commands necessary to develop and run this app can be found in the included Makefile. These instructions assume a working integration between the edX ecommerce service and the LMS, with asynchronous fulfillment configured on the ecommerce service.

To get started, create a new virtual environment and install the included requirements.

$ make requirements

This project uses Celery to asynchronously execute tasks, such as those required during order fulfillment. Celery requires a solution to send and receive messages which typically comes in the form of a separate service called a message broker. This project uses RabbitMQ as a message broker. On OS X, use Homebrew to install it.

$ brew install rabbitmq

By default, most operating systems don’t allow enough open files for a message broker. RabbitMQ’s docs indicate that allowing at least 4096 file descriptors should be sufficient for most development workloads. Check the limit on the number of file descriptors in your current process.

$ ulimit -n

If it needs to be adjusted, run:

$ ulimit -n 4096

Next, start the RabbitMQ server.

$ rabbitmq-server

In a separate process, start the Celery worker.

$ make worker

In a third process, start the ecommerce service. In order for tasks to be visible to the ecommerce worker, the value of Celery’s BROKER_URL setting must shared by the ecommerce service and the ecommerce worker.

Finally, in a fourth process, start the LMS. At this point, if you attempt to enroll in a course supported by the ecommerce service, enrollment will be handled asynchronously by the ecommerce worker.

If you’re forced to shut down the Celery workers prematurely, tasks may remain in the queue. To clear them, you can reset RabbitMQ.

$ rabbitmqctl stop_app $ rabbitmqctl reset $ rabbitmqctl start_app

License

The code in this repository is licensed under the AGPL unless otherwise noted. Please see LICENSE.txt for details.

How To Contribute

Anyone merging to this repository is expected to release and monitor their changes; if you are not able to do this DO NOT MERGE, please coordinate with someone who can to ensure that the changes are released.

Please also read How To Contribute. Even though it was written with edx-platform in mind, these 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.

Mailing List and IRC Channel

You can discuss this code in the edx-code Google Group or in the #edx-code IRC channel on Freenode.

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

edx-ecommerce-worker-3.1.1.tar.gz (39.7 kB view details)

Uploaded Source

Built Distribution

edx_ecommerce_worker-3.1.1-py3-none-any.whl (34.8 kB view details)

Uploaded Python 3

File details

Details for the file edx-ecommerce-worker-3.1.1.tar.gz.

File metadata

  • Download URL: edx-ecommerce-worker-3.1.1.tar.gz
  • Upload date:
  • Size: 39.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for edx-ecommerce-worker-3.1.1.tar.gz
Algorithm Hash digest
SHA256 4476997a33e54a48f4e4ac01f02d837ae0b6c2af266c45645d71f3e628cb986b
MD5 82b5e6542403d5042b60799c85c14285
BLAKE2b-256 bc321b1c6f49faa975c92bd450f317c2991d50c772b4be1fef4801806252dcf4

See more details on using hashes here.

File details

Details for the file edx_ecommerce_worker-3.1.1-py3-none-any.whl.

File metadata

  • Download URL: edx_ecommerce_worker-3.1.1-py3-none-any.whl
  • Upload date:
  • Size: 34.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for edx_ecommerce_worker-3.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1f7f87c7ac333ce3a040cadaf38e5df74684c991c659289d47ce1a5f8a6fd160
MD5 23b9e8e7bc59ebf0c904cd3511cce24e
BLAKE2b-256 ca0cef1fe8e9e3812211b7ddf08acbc9f8336584a9887b6a62e9a599fb473c79

See more details on using hashes here.

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