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}
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}
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}
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
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}