import requests
import json
import time
from concurrent.futures import ThreadPoolExecutor, as_completed

# Konfigurasi
API_URL = "https://a...content-available-to-author-only...1.com/index/user/do_register"
BATCH_SIZE = 1000
TOTAL_DATA = 5
MAX_WORKERS = 10  # Jumlah thread paralel

# Fungsi untuk generate dummy data
def generate_data(index):
    return {
        "id": index,
        "name": f"Item {index}",
        "value": index * 2,
    }

# Fungsi untuk mengirim 1 batch data
def send_batch(batch_data):
    try:
        response = requests.post(API_URL, json=batch_data, timeout=10)
        response.raise_for_status()
        return {"success": True, "count": len(batch_data)}
    except requests.RequestException as e:
        print(f"Error sending batch: {e}")
        return {"success": False, "error": str(e)}

# Fungsi utama untuk proses batching dan feeding
def main():
    start_time = time.time()
    with ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor:
        futures = []
        for i in range(0, TOTAL_DATA, BATCH_SIZE):
            batch = [generate_data(j) for j in range(i, min(i + BATCH_SIZE, TOTAL_DATA))]
            futures.append(executor.submit(send_batch, batch))

        total_sent = 0
        for future in as_completed(futures):
            result = future.result()
            if result.get("success"):
                total_sent += result["count"]

    end_time = time.time()
    print(f"Total sent: {total_sent} data")
    print(f"Elapsed time: {end_time - start_time:.2f} seconds")

if __name__ == "__main__":
    main()
