{"id":13758175,"url":"https://github.com/openedx/xqueue","last_synced_at":"2025-04-05T22:07:42.285Z","repository":{"id":4233328,"uuid":"5356787","full_name":"openedx/xqueue","owner":"openedx","description":"XQueue defines an interface for the LMS to communicate with external grader services.","archived":false,"fork":false,"pushed_at":"2025-03-29T15:20:57.000Z","size":880,"stargazers_count":39,"open_issues_count":12,"forks_count":98,"subscribers_count":134,"default_branch":"master","last_synced_at":"2025-03-29T21:06:28.880Z","etag":null,"topics":["backend-service"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openedx.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-08-09T14:43:31.000Z","updated_at":"2025-02-19T17:07:00.000Z","dependencies_parsed_at":"2023-07-05T21:16:36.526Z","dependency_job_id":"2a5868f5-c3eb-423f-917c-d9eb980cb85a","html_url":"https://github.com/openedx/xqueue","commit_stats":null,"previous_names":[],"tags_count":82,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Fxqueue","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Fxqueue/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Fxqueue/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Fxqueue/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openedx","download_url":"https://codeload.github.com/openedx/xqueue/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247406090,"owners_count":20933803,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend-service"],"created_at":"2024-08-03T12:01:04.089Z","updated_at":"2025-04-05T22:07:42.260Z","avatar_url":"https://github.com/openedx.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"⛔️ WARNING\n==========\n\nThis repository is under-maintained. We are not fixing bugs or developing new features for it. We hope to deprecate it officially in October of 2024. For updates, `follow along on the DEPR ticket \u003chttps://github.com/openedx/public-engineering/issues/214\u003e`_.\n\nAlthough we have stopped integrating new contributions, we always appreciate security disclosures and patches sent to security@openedx.org\n\nxqueue\n======\n\nXQueue defines an interface for the LMS to communicate with external\ngrader services.  For example, when a student submits a problem in the LMS,\nit gets sent to the XQueue.  The XQueue then has the problem graded\nby an external service and sends the response back to the LMS.\n\nHow the LMS Interacts with the XQueue\n-------------------------------------\n\n1. The LMS pushes student submissions to the XQueue with an HTTP POST request to\nthe URL `/xqueue/submit`.  The submission contains a callback URL indicating\nwhere the graded response should be sent.\n\n2. When the submission has been graded, the XQueue pushes a response back\nto the LMS with an HTTP POST request to the callback URL.\n\nHow External Graders Interact with the XQueue\n---------------------------------------------\n\nThere are two ways kinds of grading services: passive and active.  These\ninteract with the XQueue in different ways.\n\nPassive Graders (aka Push Graders)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPassive graders wait for the XQueue to send them submissions.  They then\nrespond synchronously with a graded response.\n\n1. The LMS sends messages to a particular queue.\n\n2. XQueue checks its settings and finds that the queue has a URL associated\nwith it.  XQueue forwards the message to that URL.\n\n3. The passive grader receives a POST request from the XQueue and\nresponds synchronously with the graded response.\n\n4. XQueue forwards the graded response to the callback URL the LMS\nprovided in its original message.\n\nActive Graders (aka Pull Graders)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nActive graders pull messages off the XQueue and push responses back to the XQueue.\n\n1. The test client sends messages to a particular queue.\n\n2. The active grader polls the XQueue using a REST-like interface.  When it\nreceives a submission, it pushes a response back to the XQueue, also using\na REST-like interface.\n\nIf a submission is retrieved but not graded, it will be available in the queue\nlater following the SUBMISSION_PROCESSING_DELAY when it is requeued.\n\n3. XQueue pushes the response back to the LMS.\n\nLocal Testing\n-------------\n\nXQueue is now available as a docker image used as part of Docker Devstack.\nYou can start and provision it by using xqueue specific commands configured in\nyour `devstack` directory\n\n    make dev.provision.xqueue\n    make dev.up.xqueue\n\nXQueue will use the shared MySQL image.\n\nTests\n-----\n\nYou can run the unit/integration test suite using:\n\n    make test\n\nafter connecting to your container on Docker Devstack\n\n    make xqueue-shell\n    make test\n\nLicense\n-------\n\nThe code in this repository is licensed under version 3 of the AGPL unless\notherwise noted.\n\nPlease see ``LICENSE.txt`` for details.\n\nHow to Contribute\n-----------------\n\nContributions are very welcome. The easiest way is to fork this repo, and then\nmake a pull request from your fork. The first time you make a pull request, you\nmay be asked to sign a Contributor Agreement.\n\nReporting Security Issues\n-------------------------\n\nPlease do not report security issues in public. Please email security@openedx.org\n\nMailing List and other support options\n--------------------------------------\n\nhttps://open.edx.org/getting-help\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenedx%2Fxqueue","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenedx%2Fxqueue","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenedx%2Fxqueue/lists"}