Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
hackinscience
hkis-website
Commits
343567cc
Commit
343567cc
authored
Dec 12, 2020
by
Julien Palard
Browse files
Documenting the checker protocol.
parent
cb704f46
Changes
1
Show whitespace changes
Inline
Side-by-side
README.md
View file @
343567cc
...
...
@@ -38,3 +38,26 @@ $ ./manage.py compilemessages
Exercises (title and wording) are translated via the admin (or the
API), we use django-modeltranslation.
## How does the checker bot work?
The answers are load-balanced to correction workers using Celery, so
you can have multiple machines dedicated to correct loads of answers.
Once received by a worker the worker runs two things:
-
An optional
`pre_check.py`
script, that sets-up anything specific
for this answers (required files and directories, translations,
whatever is needed).
-
A
`check.py`
script is then started in a sandbox (no internet
connectivity, restricted filesystem, CPU, memory usage, …). This is
the script that check the student answer, the protocol is simple: if
the script prints, then then answer is wrong, and what's been
printed is displayed, as Markdown, to the student.
Both
`pre_check.py`
and
`check.py`
are in Python, but they're not
limited to check for Python answers, if you want to check for shell
script or C, or whatever, the
`check.py`
can use
`subprocess`
to run
the answer script, or compile the answer code, or whatever needed.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment