From fcbee342b377c6cf6ab4e2a217d8f4fc9c99a667 Mon Sep 17 00:00:00 2001 From: darkicewolf50 <95242911+darkicewolf50@users.noreply.github.com> Date: Thu, 28 Nov 2024 17:50:02 +0000 Subject: [PATCH] feat(Packagers): tested out FastAPI its a great wrapper comes with auto docs/test tool that shows how to do the api request, marginally slower --- FastAPI test 1000 requests.png | Bin 0 -> 12256 bytes __pycache__/newMain.cpython-312.pyc | Bin 0 -> 976 bytes newMain.py | 43 ++++++++++++++++++++++++++++ testhttp.py | 2 +- 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 FastAPI test 1000 requests.png create mode 100644 __pycache__/newMain.cpython-312.pyc create mode 100644 newMain.py diff --git a/FastAPI test 1000 requests.png b/FastAPI test 1000 requests.png new file mode 100644 index 0000000000000000000000000000000000000000..a86b6567b6e5ff694d65d6207de7142bd7d24c8d GIT binary patch literal 12256 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

L!m^DdNpXeh|&nw^VkGH=c?(ZiowrwDFTS(6r#h z8{Vyba<8`L&oYo3J;{x|Z?+9O&^`E;AA>&6Ji_SvZIn`UMJ4n;e=V6~o%sGZKSn zy5fi-bd{H4Brf8g34LK2O$)xeV@K{pYyOKj^1rr40TD${nHw^Wl)Z|t#;*rLQ&vO0 zXa?t!JRX@)QHEcyD+B8%lB>dlKNaf|*R=K_DUpyq&)%-ZTG%^c9FO#<