Hier ist ein minimal reproduzierbares Beispiel meiner FastAPI-App. Ich habe ein seltsames Verhalten und bin mir nicht sicher, ob ich den Grund verstehe.
Ich verwende ApacheBench (
Zeit pro Anfrage : 63,528 [ms] (Mittelwert über alle gleichzeitigen Anfragen)
Übertragungsrate: 1,97 [Kbytes/Sek.] empfangen*
sync (mit time.sleep):
Parallelitätsgrad: 50
*Testzeit: 78,615 Sekunden
Abgeschlossene Anfragen: 1000
Fehlgeschlagene Anfragen: 0
Gesamtübertragung: 128000 Bytes
Übertragenes HTML: 4000 Bytes
Anfragen pro Sekunde: 12,72 [#/s] (Mittelwert)
Zeit pro Anfrage: 3930,751 [ms] (Mittelwert)
Zeit pro Anfrage: 78,615 [ms] (Mittelwert, über alle gleichzeitigen Anforderungen hinweg)
Übertragungsrate: 1,59 [Kbytes/Sek ] empfangen*
sync_async (Zeitschlaf mit run_in_executor) : *Parallelität Level: 50
Testzeit: 256,201 Sekunden
Abgeschlossene Anfragen: 1000
Fehlgeschlagene Anfragen: 0
Gesamtübertragung: 128.000 Bytes
Übertragenes HTML: 4.000 Bytes
Anfragen pro Sekunde: 3,90 [#/sec] (Mittelwert)
Zeit pro Anfrage: 12810,038 [ms] (Mittelwert)
Zeit pro Anfrage: 256,201 [ms] (Mittelwert über alle gleichzeitigen Anfragen)
Übertragungsrate: 0,49 [Kbytes/Sek.] empfangen*
sync_async_fastapi (Zeitschlaf mit run_in Threadpool):
*Parallelitätsstufe: 50
Benötigte Zeit für Tests: 78,877 Sekunden
Abgeschlossene Anfragen: 1000
Fehlgeschlagene Anfragen: 0
Gesamtübertragung: 128000 Bytes
Übertragenes HTML: 4000 Bytes
Anfragen pro Sekunde: 12,68 [#/sec] (Mittelwert)
< li>Zeit pro Anfrage: 3943,841 [ms] (Mittelwert)
Zeit pro Anfrage: 78,877 [ms] (Mittelwert, über alle gleichzeitigen Prozesse hinweg). Anfragen)
Übertragungsrate: 1,58 [Kbytes/Sek.] empfangen*
Zusammenfassend lässt sich sagen, dass ich insbesondere bei den Ergebnissen eine überraschende Ungleichheit erlebe bei Verwendung von run_in_executor, bei dem ich auf deutlich höhere Durchschnittszeiten stoße (12 Sekunden). Ich verstehe dieses Ergebnis nicht.
--- EDIT --- Nach AKX-Antwort.
Hier ist ein minimal reproduzierbares Beispiel meiner FastAPI-App. Ich habe ein seltsames Verhalten und bin mir nicht sicher, ob ich den Grund verstehe. Ich verwende ApacheBench ([code]ab[/code]), um mehrere Anfragen wie folgt zu senden: [code]ab -n 1000 -c 50 -H 'accept: application/json' -H 'x-data-origin: source' 'http://localhost:8001/test/async' [/code] [b]FastAPI-App[/b] [code]import time import asyncio import enum from typing import Any
from fastapi import FastAPI, Path, Body from starlette.concurrency import run_in_threadpool
Hier ist ein minimal reproduzierbares Beispiel meiner FastAPI-App. Ich habe ein seltsames Verhalten und bin mir nicht sicher, ob ich den Grund verstehe.
Ich verwende ApacheBench ( ab ), um mehrere...
Ich arbeite an einem ASP .NET Core-Projekt, in dem ich Klassen habe, die einen Pool von Arbeitsthreads für die Aufgabenausführung verwalten, und ich verwende den .NET-Thread-Pool, um Aufgaben für die...
Ich habe Executor zum LocalExecuter in der Datei airflow.cfg gemacht. Aber wenn ich die DAG ausführe, wirft es immer noch Fehler, als ausführender Celeryexecutor (Parallelism = 64) Taskinstanz in die...
Ich erstelle keine Bohne explizit. Ich verwende @enableAsync und Spring -Eigenschaften.
spring.task.execution.pool.core-size=10
spring.task.execution.pool.max-size=20...