async def CreateTask(request): task_request = json.loads(await request.json()) # 1 check the archive file size and judge the validation if task_request.get("archive", ""): archive_size = len(task_request["archive"]["data"]) if archive_size > Configs.MAX_SIZE: return web.Response(status=413, body={ "error": 413, "reason": "Request Entity Too Large", "description": "" }, content_type="application/json") # 2 add task to DB task_doc = DataTransformer.TaskRequest2TaskDoc(task_request) DBoperation = MongoDB.MonoDBOperation() result = await DBoperation.AddDB(task_doc) task_id = result["data"] task_doc["id"] = task_id task_doc.pop("_id") # 3 send response to client response = web.Response(status=200, body=json.dumps(task_doc), content_type="application/json") await response.prepare(request) await response.write_eof() # 4 make work dir for this task await IO.MakeWorkDir(task_id, logger) # 5 extract file if task_request.get("archive", ""): await IO.FileExtract(task_id, task_request["archive"]["type"], task_request["archive"]["data"], logger) return response