parth parekh
working demo
7e63028
import asyncio
import aiohttp
import json
from tqdm.asyncio import tqdm
import time
from test import test_texts
url = "https://vidhitmakvana1-contact-sharing-recognizer-api.hf.space/detect_contact"
concurrent_requests = 2
async def process_text(session, text, semaphore):
payload = {"text": text}
headers = {"Content-Type": "application/json"}
async with semaphore:
start_time = time.time()
while True:
async with session.post(url, data=json.dumps(payload), headers=headers) as response:
if response.status == 200:
result = await response.json()
end_time = time.time()
result['response_time'] = end_time - start_time
return result
elif response.status == 429:
print(f"Rate limit exceeded. Waiting for 60 seconds before retrying...")
await asyncio.sleep(60)
else:
print(f"Error for text: {text}")
print(f"Status code: {response.status}")
print(f"Response: {await response.text()}")
return None
async def main():
semaphore = asyncio.Semaphore(concurrent_requests)
async with aiohttp.ClientSession() as session:
tasks = [process_text(session, text, semaphore) for text in [*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts,*test_texts]]
results = await tqdm.gather(*tasks)
correct_predictions = 0
total_predictions = len(results)
total_response_time = 0
for text, result in zip(test_texts, results):
if result:
print(f"Text: {result['text']}")
print(f"Contact Probability: {result['contact_probability']:.4f}")
print(f"Is Contact Info: {result['is_contact_info']}")
print(f"Response Time: {result['response_time']:.4f} seconds")
print("---")
if result['is_contact_info']:
correct_predictions += 1
total_response_time += result['response_time']
accuracy = correct_predictions / (total_predictions * 37)
average_response_time = total_response_time / total_predictions
print(f"Accuracy: {accuracy:.2f}")
print(f"Average Response Time: {average_response_time:.4f} seconds")
if __name__ == "__main__":
while True:
start_time = time.time()
asyncio.run(main())
end_time = time.time()
total_time = end_time - start_time
print(f"\nTotal execution time: {total_time:.2f} seconds")