> ## Documentation Index
> Fetch the complete documentation index at: https://apidoc.cometapi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Tangani rate limit dan konkurensi

> Tangani rate limit CometAPI dengan membatasi konkurensi permintaan, mencoba ulang respons 429 dengan jitter, dan memantau penggunaan berdasarkan model dan route.

Tangani rate limit dengan mengontrol konkurensi sebelum permintaan keluar dari aplikasi Anda. Saat CometAPI mengembalikan `429`, coba ulang dengan exponential backoff dan jitter, lalu kurangi lonjakan traffic jika percobaan ulang berulang kali terjadi.

## Batasi konkurensi

Contoh Python berikut membatasi permintaan chat serentak dengan async semaphore:

```python theme={null}
import asyncio
import os
from openai import AsyncOpenAI

client = AsyncOpenAI(
    api_key=os.environ["COMETAPI_KEY"],
    base_url="https://api.cometapi.com/v1",
)

semaphore = asyncio.Semaphore(5)

async def ask(prompt):
    async with semaphore:
        completion = await client.chat.completions.create(
            model="your-model-id",
            messages=[{"role": "user", "content": prompt}],
        )
        return completion.choices[0].message.content

async def main():
    prompts = ["Say hello.", "Write a title.", "Return one JSON key."]
    results = await asyncio.gather(*(ask(prompt) for prompt in prompts))
    print(results)

asyncio.run(main())
```

Hasilnya adalah array output model:

```json theme={null}
[
  "Hello.",
  "A concise title",
  "{\"key\":\"value\"}"
]
```

## Coba ulang rate limit

Contoh JavaScript berikut mencoba ulang respons `429` dengan jitter:

```javascript theme={null}
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.COMETAPI_KEY,
  baseURL: "https://api.cometapi.com/v1",
});

async function sleep(milliseconds) {
  return new Promise((resolve) => setTimeout(resolve, milliseconds));
}

async function createCompletion() {
  for (let attempt = 0; attempt < 5; attempt += 1) {
    try {
      return await client.chat.completions.create({
        model: "your-model-id",
        messages: [{ role: "user", content: "Say hello." }],
      });
    } catch (error) {
      if (error.status !== 429 || attempt === 4) {
        throw error;
      }

      const delay = Math.min(30000, 1000 * 2 ** attempt);
      await sleep(delay + Math.random() * 1000);
    }
  }
}

const completion = await createCompletion();
console.log(completion.choices[0].message.content);
```

Respons yang berhasil berisi chat completion normal:

```json theme={null}
{
  "choices": [
    {
      "message": {
        "content": "Hello."
      }
    }
  ]
}
```

## Error umum

| Error                          | Perbaikan                                                           |
| ------------------------------ | ------------------------------------------------------------------- |
| Permintaan paralel tanpa batas | Tambahkan semaphore, antrean, atau worker pool.                     |
| Mencoba ulang semua kegagalan  | Coba ulang hanya `429` dan kegagalan server sementara.              |
| Tidak ada metrik per model     | Catat route, model ID, status, dan latensi untuk setiap permintaan. |
| Badai retry                    | Tambahkan jitter dan batasi delay retry maksimum.                   |

## Tautan terkait

* [Kode error dan strategi retry](/id/guides/error-codes-and-retry-strategy)
* [Kode error & penanganan](/id/errors/error-codes-handling)
* [Halaman model](/id/overview/models)
* [Direktori model](https://www.cometapi.com/models/)
* [Harga](https://www.cometapi.com/pricing/)
* [Panduan cepat CometAPI](/id/overview/quick-start)

<script type="application/ld+json">
  {`
    {
    "@context": "https://schema.org",
    "@graph": [
      {
        "@type": "TechArticle",
        "@id": "https://apidoc.cometapi.com/guides/rate-limits-and-concurrency",
        "headline": "Bagaimana cara menangani rate limit dan konkurensi?",
        "description": "Tangani rate limit CometAPI dengan membatasi konkurensi, mencoba ulang respons 429 dengan jitter, dan memantau penggunaan berdasarkan model dan route.",
        "url": "https://apidoc.cometapi.com/guides/rate-limits-and-concurrency",
        "author": {
          "@type": "Organization",
          "name": "CometAPI"
        },
        "publisher": {
          "@type": "Organization",
          "name": "CometAPI",
          "url": "https://www.cometapi.com"
        }
      },
      {
        "@type": "BreadcrumbList",
        "itemListElement": [
          {
            "@type": "ListItem",
            "position": 1,
            "name": "Dokumentasi CometAPI",
            "item": "https://apidoc.cometapi.com/"
          },
          {
            "@type": "ListItem",
            "position": 2,
            "name": "Panduan",
            "item": "https://apidoc.cometapi.com/guides/use-cometapi-with-openai-sdk"
          },
          {
            "@type": "ListItem",
            "position": 3,
            "name": "Bagaimana cara menangani rate limit dan konkurensi?",
            "item": "https://apidoc.cometapi.com/guides/rate-limits-and-concurrency"
          }
        ]
      }
    ]
    }
    `}
</script>
