39 lines
1.4 KiB
Python
39 lines
1.4 KiB
Python
|
import asyncio
|
||
|
import httpx
|
||
|
|
||
|
with open('my_list.txt', 'r') as file:
|
||
|
ip_list = [line.strip() for line in file]
|
||
|
|
||
|
async def send_request(client, server_ip, rangee, sigma):
|
||
|
data = {
|
||
|
"a": rangee[0],
|
||
|
"b": rangee[1],
|
||
|
"sigma": sigma
|
||
|
}
|
||
|
response = await client.post(f"http://{server_ip}:8000/compute", json=data, timeout=300.0)
|
||
|
return response.text
|
||
|
|
||
|
# Główna funkcja do wysyłania zapytań do wszystkich serwerów równocześnie
|
||
|
async def main(a_start, b_end, sigma):
|
||
|
num_chunks = len(ip_list)
|
||
|
chunk_size = (b_end - a_start + 1) // num_chunks
|
||
|
ranges = [(a_start + i * chunk_size, min(a_start + (i + 1) * chunk_size - 1, b_end))
|
||
|
for i in range(num_chunks)]
|
||
|
async with httpx.AsyncClient() as client:
|
||
|
tasks = [send_request(client, server, rangee, sigma) for server, rangee in zip(ip_list, ranges)]
|
||
|
# tasks2 = [send_request(client, server, rangee, sigma) for server, rangee in zip(ip_list, ranges[16:32])]
|
||
|
# tasks.extend(tasks2)
|
||
|
results = await asyncio.gather(*tasks)
|
||
|
final_result = 0
|
||
|
for idx, result in enumerate(results):
|
||
|
final_result += int(result.strip('"'))
|
||
|
final_result = final_result % 999999937
|
||
|
print(final_result)
|
||
|
|
||
|
# Uruchomienie głównej funkcji
|
||
|
if __name__ == "__main__":
|
||
|
sigma = 510104288
|
||
|
a = 1
|
||
|
b = 7000
|
||
|
asyncio.run(main(a, b, sigma))
|