Ir para a navegação

Processamento em batch

Process multiple lipsync generations efficiently

O batch Sync Labs API processa até 500 gerações lip sync em uma única solicitação usando um arquivo JSONL. Isso é ideal para fluxos de trabalho de processamento de video em massa, como campanhas de video personalizadas, localização de conteúdo ou qualquer cenário que exija geração de lip sync de alto volume.

Qual é o formato de arquivo batch?

O processamento em batch permite que você envie de 20 a 500 gerações sem precisar lidar com filas ou simultaneidade, com um tempo de resposta previsto de 24 horas. Os trabalhos em batch ignoram o limite normal de simultaneidade de geração, mas o API de lotes está disponível apenas nos planos Scale e Enterprise. A partir de agora, apenas gerações com entradas de até 30 segundos são suportadas no processamento batch.

O aPI de lotes está disponível apenas para usuários Scale e Enterprise

Limites de simultaneidade em batch

Os trabalhos em batch ignoram o limite normal de simultaneidade por geração, mas um separadorate limit limita quantos batches você pode executar de uma vez, com base no seu plano. Se você enviar um novo batch enquanto já estiver nesse limite, o API retornará uma resposta 429 Too Many Requests. O corpo 429 é um objeto JSON que descreve o limite atingido:

{
"statusCode": 429,
"errorCode": "concurrency_limit_reached",
"message": "Batch concurrency limit reached. Please wait for an existing batch to complete or upgrade your plan.",
"activeBatches": 3,
"concurrencyLimit": 3,
"retryAfterSeconds": 20
}

A resposta também inclui um cabeçalho Retry-After (em segundos) e um cabeçalho X-Sync-Concurrency-Limit. Em vez de tentar novamente imediatamente, aguarde retryAfterSeconds antes de enviar novamente ou aguarde a conclusão de um de seus batches em voo.

Como faço para criar um trabalho batch?

1

Prepare seu arquivo de entrada

Crie um arquivo JSON Lines (.jsonl) com suas solicitações de geração. Cada linha deve conter um request_id exclusivo, o endpoint (deve ser "/v2/generate") e um payload com o formato de solicitação de geração padrão (igual a Gerar API). O arquivo deve estar no formato JSON Lines (.jsonl) com mínimo de 20 registros, tamanho máx de arquivo de 5 MB e até 500 solicitações por batch.

input.jsonl
{"request_id": "request-1", "endpoint": "/v2/generate", "payload": {"model": "lipsync-2", "input": [{"type": "video", "url": "https://assets.sync.so/docs/example-video.mp4"}, {"type": "audio", "url": "https://assets.sync.so/docs/example-audio.wav"}]}}
{"request_id": "request-2", "endpoint": "/v2/generate", "payload": {"model": "lipsync-2", "input": [{"type": "video", "url": "https://assets.sync.so/docs/example-video.mp4"}, {"type": "audio", "url": "https://assets.sync.so/docs/example-audio.wav"}]}}
2

Crie um batch

<CodeGroup> <CodeBlock>```python from sync import Sync

sync = Sync()

batch = sync.batch.create( input=open(“input.jsonl”, “rb”) )

print(f”Batch created with ID: {batch.id}”)

<CodeBlock>```typescript
import { SyncClient } from "@sync.so/sdk";
const client = new SyncClient();
const batch = await client.batch.create(fs.createReadStream("input.jsonl"));
console.log('Batch created with ID:', batch.id)
```</CodeBlock>
<CodeBlock>```bash curl
curl -X POST https://api.sync.so/v2/batch \
-H "x-api-key: <your-api-key>" \
-H "Content-Type: multipart/form-data" \
-F input=@<input.jsonl>
```</CodeBlock>
</CodeGroup>
**Parâmetros opcionais:** - `webhook_url`: Receba notificações quando o batch for concluído - `dry_run`: Defina como `true` para validar seu arquivo de entrada sem processamento
</Step>
<Step title="Verifique o status do batch">
Monitore o progresso do seu batch pesquisando o status:
<CodeGroup>
<CodeBlock>```python Check batch status
batch = sync.batch.get(batch_id)
print(f"Status: {batch.status}")
print(f"Progress: {batch.metrics}")
```</CodeBlock>
<CodeBlock>```typescript
const batch = await client.batch.get(batch_id);
console.log('Status:', batch.status);
console.log('Progress:', batch.metrics);
```</CodeBlock>
<CodeBlock>```bash
curl https://api.sync.so/v2/batch/<batch_id> \
-H "x-api-key: <your-api-key>"
```</CodeBlock>
</CodeGroup>
Um batch pode ter um dos seguintes status:
1. **`PENDING`**: Batch criado, aguardando início do processamento
2. **`PROCESSING`**: Gerações estão sendo processadas
3. **`COMPLETED`**: Todas as gerações finalizadas (com sucesso ou com falhas)
4. **`FAILED`**: O processamento em batch falhou totalmente
</Step>
<Step title="Verifique os resultados do batch">
Quando um batch é concluído, os resultados ficam disponíveis como um arquivo de linhas JSON no `outputUrl` da resposta de obtenção do batch. Um `GET` para esse URL retorna um redirecionamento `302` para um arquivo de resultado assinado; os clientes que seguem redirecionamentos automaticamente podem ler a resposta JSONL diretamente. Cada linha contém:
```jsonl output.jsonl
{"request_id": "request-1", "endpoint": "/v2/generate", "payload": {...}, "status": "COMPLETED", "error": null, "response": {...}, "updated_at": "2024-01-15T10:35:00Z"}
{"request_id": "request-2", "endpoint": "/v2/generate", "payload": {...}, "status": "FAILED", "error": {"code": "INVALID_INPUT", "message": "..."}, "response": null, "updated_at": "2024-01-15T10:35:00Z"}

O campo response contém os mesmos dados que respostas individuais Gerar API.

Para obter um exemplo funcional completo, consulte o exemplo de processamento batch em nosso repositório de exemplos.

Notificações de webhook

Ao fornecer um webhook_url, você receberá notificações POST quando seu batch for concluído:

webhook_payload.json
{
"id": "batch_abc123",
"createdAt": "2024-01-15T10:30:00Z",
"status": "COMPLETED",
"webhookUrl": "https://your-webhook-url.com/batch-webhook",
"metrics": {
"totalGenerations": 5,
"successCount": 4,
"failedCount": 1,
"pendingCount": 0
},
"options": {},
"outputUrl": "https://api.sync.so/v2/batches/batch_abc123/result"
}

Recursos relacionados - Limites de taxa - entenda API rate limiting para planejar seus tamanhos batch de maneira eficaz - Guia de Webhooks - configure notificações webhook para eventos de conclusão batch - Tratamento de erros - referência para códigos de erro específicos do batch e solução de problemas