def run_preset(request): """ Execute a script (sent as JSON). """ evalnode = request.POST.get("node", "") jsondata = request.POST.get("script") nodes = json.loads(jsondata) tree = script.Script(nodes) errors = tree.validate() if errors: return HttpResponse(json.dumps(dict( status="VALIDATION", errors=errors, )), mimetype="application/json") term = tree.get_node(evalnode) if term is None: terms = tree.get_terminals() if not terms: return HttpResponse(json.dumps(dict( status="NOSCRIPT", )), mimetype="application/json") term = terms[0] async = OcrTask.run_celery_task("run.script", (evalnode, nodes, request.output_path, _cache_name(request)), untracked=True, asyncronous=True, queue="interactive") out = dict( node=evalnode, task_id=async.task_id, status=async.status, results=async.result ) response = HttpResponse(mimetype="application/json") json.dump(out, response, ensure_ascii=False) return response
def abort(request, task_id): """ Kill a running celery task. """ OcrTask.revoke_celery_task(task_id, kill=True) out = dict(task_id=task_id, status="ABORT") response = HttpResponse(mimetype="application/json") json.dump(out, response, ensure_ascii=False) return response
def result(request, task_id): """ Fetch the result for one Celery task id. """ async = OcrTask.get_celery_result(task_id) out = dict(task_id=async .task_id, status=async .status, results=async .result) response = HttpResponse(mimetype="application/json") json.dump(out, response, ensure_ascii=False) return response
def abort(request, task_id): """ Kill a running celery task. """ OcrTask.revoke_celery_task(task_id, kill=True) out = dict( task_id=task_id, status="ABORT" ) response = HttpResponse(mimetype="application/json") json.dump(out, response, ensure_ascii=False) return response
def result(request, task_id): """ Fetch the result for one Celery task id. """ async = OcrTask.get_celery_result(task_id) out = dict( task_id=async.task_id, status=async.status, results=async.result ) response = HttpResponse(mimetype="application/json") json.dump(out, response, ensure_ascii=False) return response
def results(request, task_ids): """ Fetch the results of several Celery task ids. """ out = [] for task_id in task_ids.split(","): async = OcrTask.get_celery_result(task_id) out.append(dict( result=_flatten_result(async.result), task_id=task_id, status=async.status, )) response = HttpResponse(mimetype="application/json") json.dump(out, response, ensure_ascii=False) return response
def results(request, task_ids): """ Fetch the results of several Celery task ids. """ out = [] for task_id in task_ids.split(","): async = OcrTask.get_celery_result(task_id) out.append( dict( result=_flatten_result(async .result), task_id=task_id, status=async .status, )) response = HttpResponse(mimetype="application/json") json.dump(out, response, ensure_ascii=False) return response
def dispatch_batch(batch, pids): """Dispatch a batch task.""" # hack - sort the incoming list of pids storage = batch.project.get_storage() pid = storage.sort_pidlist(storage.namespace, pids) options = dict(loglevel=60, retries=2) ocrtasks = [] for pid in pids: docscript = script_for_document(batch.script, batch.project, pid) tid = OcrTask.get_new_task_id() args = ( batch.project.pk, pid, docscript, ) kwargs = dict() ocrtask = OcrTask( task_id=tid, user=batch.user, batch=batch, project=batch.project, page_name=pid, # FIXME: This is wrong task_name=batch.task_type, status="INIT", args=args, kwargs=kwargs, ) ocrtask.save() ocrtasks.append(ocrtask) OcrTask.run_celery_task_multiple(batch.task_type, ocrtasks, **options)
def binary(request, pid): """ Trigger a re-binarization of the image for viewing purposes. """ taskname = "create.docdzi" doc = request.project.get_storage().get(pid) if not request.is_ajax(): response = HttpResponse(mimetype=doc.binary_mimetype) with doc.binary_content as handle: response.write(handle.read()) return response if doc.binary_empty: return HttpResponseNotFound async = OcrTask.run_celery_task(taskname, (request.project.pk, pid, "binary"), untracked=True, queue="interactive", asyncronous=request.POST.get("async", False)) out = dict(task_id=async.task_id, status=async.status, results=async.result) return HttpResponse(json.dumps(out), mimetype="application/json")
def dispatch_batch(batch, pids): """Dispatch a batch task.""" # hack - sort the incoming list of pids storage = batch.project.get_storage() pid = storage.sort_pidlist(storage.namespace, pids) options = dict(loglevel=60, retries=2) ocrtasks = [] for pid in pids: docscript = script_for_document(batch.script, batch.project, pid) tid = OcrTask.get_new_task_id() args = (batch.project.pk, pid, docscript,) kwargs = dict() ocrtask = OcrTask( task_id=tid, user=batch.user, batch=batch, project=batch.project, page_name=pid, # FIXME: This is wrong task_name=batch.task_type, status="INIT", args=args, kwargs=kwargs, ) ocrtask.save() ocrtasks.append(ocrtask) OcrTask.run_celery_task_multiple(batch.task_type, ocrtasks, **options)
def binary(request, pid): """ Trigger a re-binarization of the image for viewing purposes. """ taskname = "create.docdzi" doc = request.project.get_storage().get(pid) if not request.is_ajax(): response = HttpResponse(mimetype=doc.binary_mimetype) with doc.binary_content as handle: response.write(handle.read()) return response if doc.binary_empty: return HttpResponseNotFound async = OcrTask.run_celery_task(taskname, (request.project.pk, pid, "binary"), untracked=True, queue="interactive", asyncronous=request.POST.get( "async", False)) out = dict(task_id=async .task_id, status=async .status, results=async .result) return HttpResponse(json.dumps(out), mimetype="application/json")