| import aiohttp, asyncio | |
| from App import SERVER_STATE, Node | |
| import aiohttp | |
| async def upload_file(file_path: str, node: str, chunk: int, task: str): | |
| master_node = SERVER_STATE.get_master() | |
| url = f"http://{master_node.SPACE_HOST}/uploadfile/?node={node}&chunk={chunk}&task={task}" | |
| async with aiohttp.ClientSession() as session: | |
| headers = {"Transfer-Encoding": "chunked"} | |
| with open(file_path, "rb") as file: | |
| async with session.post(url, headers=headers, data=file) as response: | |
| if response.status == 200: | |
| print("File uploaded successfully") | |
| else: | |
| print("Failed to upload file") | |
| class WorkerClient: | |
| base_url = SERVER_STATE.DB | |
| async def register_worker(self): | |
| async with aiohttp.ClientSession() as session: | |
| data = { | |
| "WORKER_ID": SERVER_STATE.SPACE_HOST, | |
| "MASTER": SERVER_STATE.MASTER, | |
| "HOST_NAME": SERVER_STATE.SPACE_HOST, | |
| "SPACE_HOST": SERVER_STATE.SPACE_HOST, | |
| } | |
| response = await self.get_node() | |
| if response: | |
| return response | |
| async with session.put( | |
| f"{self.base_url}/nodes/{SERVER_STATE.SPACE_HOST}.json", json=data | |
| ) as resp: | |
| return await resp.json() | |
| async def get_node(self): | |
| async with aiohttp.ClientSession() as session: | |
| async with session.get( | |
| f"{self.base_url}/nodes/{SERVER_STATE.SPACE_HOST}.json" | |
| ) as resp: | |
| response = await resp.json() | |
| return response | |
| async def delete_node(self): | |
| async with aiohttp.ClientSession() as session: | |
| async with session.delete( | |
| f"{self.base_url}/nodes/{SERVER_STATE.SPACE_HOST}.json" | |
| ) as resp: | |
| response = await resp.json() | |
| async def get_all_nodes(self): | |
| async with aiohttp.ClientSession() as session: | |
| async with session.get(f"{self.base_url}/nodes.json") as resp: | |
| response = await resp.json() | |
| SERVER_STATE.NODES = [Node(**value) for value in response.values()] | |
| return SERVER_STATE.NODES | |