Skip to content

[F4-09] Límites por usuario y por credencial #64

Open

Description

@JCCG-code

Fase: F4 · Tamaño: S · Depende de: #57 (F4-02), #41 (F3-07)

Objetivo

Que un usuario no acapare el worker y que no se superen los límites de peticiones de su propia clave.

Alcance

  • Máximo de proyectos en ejecución por usuario (UserSettings.limits.maxConcurrentProjects, por defecto 2). Si se supera, el proyecto queda queued hasta que haya hueco (no se rechaza).
  • Token bucket en Redis por credentialId:capability (p. ej. imágenes: 5 por minuto por defecto, configurable por proveedor en el catálogo). Si no hay tokens, el trabajo se reprograma con retraso en lugar de fallar.

Criterios de aceptación

  • Test: con 3 proyectos lanzados a la vez por el mismo usuario, como máximo 2 están running en cualquier momento y los 3 terminan.
  • Test: con un límite de 2 imágenes/min, 6 imágenes tardan ≥ 2 min (fake timers) y ninguna falla por rate_limit.
  • Test: los límites de un usuario no retrasan a otro.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions