`clerk.users.count` with arguments can be very slow for large number of users
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 30/100
- Tipo di issue
- Bug
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- python
- Ambito
- api, backend, performance
Direzione di ricerca
Inizia con la riproduzione Python fornita e l’entry point clerk.users.count, confrontando la chiamata senza filtri con l’argomento created_at_before. Traccia come viene gestita la richiesta di conteggio con argomento e considera il lavoro completato quando il tempo di risposta è sostanzialmente più breve per grandi insiemi di utenti, senza modificare il risultato del conteggio.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Repro
import time
import clerk_backend_api
from clerk_backend_api import Clerk
print(clerk_backend_api.__version__) # 3.1.11 (latest)
clerk_api_key = "xxxxx"
clerk = Clerk(bearer_auth=clerk_api_key)
start_all = time.perf_counter()
all_users = clerk.users.count().total_count
end_all = time.perf_counter()
print(f"{all_users = } (took {end_all - start_all:.3f} seconds)")
# all_users = 926354 (took 0.342 seconds)
created_before_ms = int(time.time() * 1000)
start_before = time.perf_counter()
users_before_ts = clerk.users.count(created_at_before=created_before_ms).total_count
end_before = time.perf_counter()
print(f"{users_before_ts = } (took {end_before - start_before:.3f} seconds)")
# users_before_ts = 926354 (took 436.951 seconds)
As you can see, adding a predicate to users.count changes the response time from sub 1 second to ~7 minutes.
I appreciate the "COUNT *" fast path, but 7 minutes feels very long in the other case.
Is it possible that performance can be improved here at all?
- Lingua principale
- Python
- Stelle
- 186
- Fork
- 47
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di clerk/clerk-sdk-python
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
clerk/clerk-sdk-python#243 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
clerk/clerk-sdk-python#241 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
clerk/clerk-sdk-python#227 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 62/100
clerk/clerk-sdk-python#231 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 38/100
clerk/clerk-sdk-python#230 ·
Tutte le issue di clerk/clerk-sdk-python
Issue simili
-
Broken links in the docsAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
uniswap-python/uniswap-python#487 ·
-
[Bug]: agent_final_response still returns the abandoned branch's answer after navigate moves HEAD backForse già presa @enyst l’ha presa oggi. Apertabug priority:low ready-for-dev
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
OpenHands/software-agent-sdk#5822 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
-
area: server enhancement good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
scs0209/laya-guard#52 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 2 giorni