def run(): if request.method == 'POST': file = request.files['code'] data = {} if file: data['code'] = file.read().decode('utf-8') file.close() data['status'] = 'pending' program = get_model().create(data) tasks.create_clingo_job(program['id']) if request.args.get('format', 'json').lower() == 'json': return jsonify({'id': program['id']}) return Response(str(program['id']), mimetype='text/plain') return 'POST only'
def execute_clingo(prog_id): model = get_model() program = model.read(prog_id) program['status'] = 'running' model.update(program, prog_id) with tempfile.TemporaryDirectory() as tmpdirname: programfile = os.path.abspath(os.path.join(tmpdirname, 'code')) with open(programfile, 'w') as fh: fh.write(program['code']) result = subprocess.Popen(['clingo', programfile], stdout=subprocess.PIPE, universal_newlines=True) (stdout, stderr) = result.communicate() program['status'] = 'done' program['output'] = stdout program['result'] = parse_output(stdout) model.update(program, prog_id) delete_job(prog_id)
def view_result(id): program = get_model().read(id) result = program.get('result') result['id'] = id return jsonify(result)
def view_output(id): program = get_model().read(id) output = program.get('output') return Response(output, mimetype='text/plain')
def view_status(id): program = get_model().read(id) status = program['status'] if request.args.get('format', 'json').lower() == 'json': return jsonify({'id': id, 'status': status }) return Response(status, mimetype='text/plain')
def view(id): program = get_model().read(id) return jsonify(program)