| 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") | |