コード例 #1
0
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