/corrector

Sistema de corrección automática para ejercicios de Spark y Pandas.

Primary LanguagePythonMIT LicenseMIT

Corrector automático

Es un proyecto basado en Flask y Docker que apunta a corregir automáticamente guías de ejercicios basadas en código. Puntualmente, guías donde sea necesario programar en PySpark o Pandas.

app.py tiene la aplicación Flask que sirve como front-end del corrector.

corrector.py maneja la información de las guías (que se cargan a partir de los archivos YAML en el directorio guias/) y la cola de procesamiento.

Contenedores de Docker funcionarán como Workers que ejecutan una sola guía a la vez -- se levanta un contenedor, se ejecuta el código recibido y se devuelve la salida del código.

El código del Worker está en worker, con su Dockerfile. worker.py es la clase abstracta con la interfaz para cada tipo de worker (según el tipo de guiá que se ejecute: Pandas, Spark,...) y funciones auxiliares, y entry.py es el script de entrada del contenedor que trabaja con la entrada y salida estándar.

Para reducir el riesgo que conlleva ejecutar código arbitrario, se tienen las siguientes consideraciones:

  • el código recibido se ejecuta en un contenedor de Docker levantado específicamente para eso,
  • se analiza el árbol sintáctico del código para revisar que no haya llamadas a funciones que pueden servir como vector de ataque, imports o similares,
  • se encapsula el código en una función,
  • se carga el código como módulo con un namespace distinto, y
  • se corre el código bajo un try/except para evitar problemas de excepciones.