Пример #1
0
async def post_redirect(redirect_path: str, data: Data,
                        background_tasks: BackgroundTasks) -> Dict[str, Any]:
    data.data['job_id'] = get_job_id()
    logger.info(
        f'POST redirect abtest to: /{redirect_path} as {data.data["job_id"]} with group {data.ab_test}'
    )

    if data.ab_test.upper() in ServiceConfigurations.ab_test_group.keys():
        group_alias = ServiceConfigurations.ab_test_group[data.ab_test.upper()]
        customized_redirect_map = {
            group_alias:
            ServiceConfigurations.customized_redirect_map[group_alias]
        }
    else:
        customized_redirect_map = ServiceConfigurations.customized_redirect_map

    if ServiceConfigurations.enqueue:
        store_data_job._save_data_job(data.data, data.data['job_id'],
                                      background_tasks, True)
    async with aiohttp.ClientSession(timeout=aiohttp.ClientTimeout(
            total=2)) as session:
        tasks = [
            asyncio.ensure_future(
                _post_redirect(
                    session,
                    helpers.customized_redirect_builder(
                        k, v, redirect_path, customized_redirect_map),
                    data.data, k))
            for k, v in ServiceConfigurations.urls.items()
            if k in customized_redirect_map.keys()
        ]
        responses = await asyncio.gather(*tasks)
        logger.info(f'responses: {responses}')
        return responses
async def _predict_label(
    data: Data,
    job_id: str,
    background_tasks: BackgroundTasks = BackgroundTasks()
) -> Dict[str, Dict[str, float]]:
    label_proba = await __async_predict_label(data)
    store_data_job._save_data_job(data, job_id, background_tasks, False)
    return {'prediction': label_proba, 'job_id': job_id}
Пример #3
0
async def _predict_async_post(
    data: Data,
    job_id: str,
    background_tasks: BackgroundTasks = BackgroundTasks()
) -> Dict[str, List[float]]:
    image = base64.b64decode(str(data.image_data))
    io_bytes = io.BytesIO(image)
    data.image_data = Image.open(io_bytes)
    store_data_job._save_data_job(data, job_id, background_tasks, True)
    return {'job_id': job_id}
Пример #4
0
async def _predict_label(
    data: Data,
    job_id: str,
    background_tasks: BackgroundTasks = BackgroundTasks()
) -> Dict[str, List[float]]:
    image = base64.b64decode(str(data.image_data))
    io_bytes = io.BytesIO(image)
    data.image_data = Image.open(io_bytes)
    label_proba = await __async_predict_label(data)
    store_data_job._save_data_job(data, job_id, background_tasks, False)
    return {'prediction': label_proba, 'job_id': job_id}
Пример #5
0
def test_save_data_job(mocker, _uuid, data, enqueue, expected):
    mock_job = MockJob()
    src.jobs.store_data_job._save_data_job.PLATFORM = PLATFORM_ENUM.DOCKER_COMPOSE.value
    mocker.patch('src.jobs.store_data_job.SaveDataRedisJob',
                 return_value=mock_job)
    job_id = store_data_job._save_data_job(data, _uuid, mock_BackgroundTasks,
                                           enqueue)
    assert job_id == expected
Пример #6
0
async def post_redirect(redirect_path: str, data: Data,
                        background_tasks: BackgroundTasks) -> Dict[str, Any]:
    data.data["job_id"] = get_job_id()
    logger.info(f'POST redirect to: /{redirect_path} as {data.data["job_id"]}')
    if ServiceConfigurations.enqueue:
        store_data_job._save_data_job(data.data, data.data["job_id"],
                                      background_tasks, True)
    async with aiohttp.ClientSession(timeout=aiohttp.ClientTimeout(
            total=2)) as session:
        tasks = [
            asyncio.ensure_future(
                _post_redirect(
                    session,
                    helpers.customized_redirect_builder(
                        k, v, redirect_path,
                        ServiceConfigurations.customized_redirect_map),
                    data.data, k))
            for k, v in ServiceConfigurations.urls.items()
        ]
        responses = await asyncio.gather(*tasks)
        logger.info(f"responses: {responses}")
        return responses
async def _predict_async_post(
        data: Data, job_id: str,
        background_tasks: BackgroundTasks) -> Dict[str, str]:
    store_data_job._save_data_job(data, job_id, background_tasks, True)
    return {'job_id': job_id}
async def _predict(
        data: Data, job_id: str,
        background_tasks: BackgroundTasks) -> Dict[str, List[float]]:
    await __async_predict(data)
    store_data_job._save_data_job(data, job_id, background_tasks, False)
    return {'prediction': data.prediction, 'job_id': job_id}