Spaces:
Runtime error
Runtime error
feat: add asynchronous setup for webserver and transporter, and update dependencies for RabbitMQ and Uvicorn
Browse files
main.py
CHANGED
|
@@ -1,16 +1,33 @@
|
|
| 1 |
#!/usr/bin/env python3
|
| 2 |
-
|
| 3 |
import logging
|
| 4 |
import os
|
| 5 |
from pathlib import Path
|
| 6 |
from typing import Dict
|
|
|
|
| 7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
|
| 9 |
-
def
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
"""Main application entry point."""
|
| 11 |
try:
|
| 12 |
print("Start app...")
|
| 13 |
-
import src.modules.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
|
| 15 |
except Exception as e:
|
| 16 |
logging.error(f"Application failed to start: {e}", exc_info=True)
|
|
@@ -18,4 +35,4 @@ def main() -> None:
|
|
| 18 |
|
| 19 |
|
| 20 |
if __name__ == "__main__":
|
| 21 |
-
main()
|
|
|
|
| 1 |
#!/usr/bin/env python3
|
|
|
|
| 2 |
import logging
|
| 3 |
import os
|
| 4 |
from pathlib import Path
|
| 5 |
from typing import Dict
|
| 6 |
+
import asyncio
|
| 7 |
|
| 8 |
+
async def setup_webserver() -> None:
|
| 9 |
+
"""Setup web server configuration."""
|
| 10 |
+
# Placeholder for web server setup logic
|
| 11 |
+
from src.modules.api import server
|
| 12 |
+
await server()
|
| 13 |
|
| 14 |
+
async def setup_transporter() -> None:
|
| 15 |
+
"""Setup transporter configuration."""
|
| 16 |
+
# Placeholder for transporter setup logic
|
| 17 |
+
# import src.modules.
|
| 18 |
+
import src.modules.transporter
|
| 19 |
+
|
| 20 |
+
async def main() -> None:
|
| 21 |
"""Main application entry point."""
|
| 22 |
try:
|
| 23 |
print("Start app...")
|
| 24 |
+
# import src.modules.transporter
|
| 25 |
+
task1 = asyncio.create_task(setup_webserver())
|
| 26 |
+
task2 = asyncio.create_task(setup_transporter())
|
| 27 |
+
await asyncio.gather(task1, task2)
|
| 28 |
+
print("App started successfully.")
|
| 29 |
+
|
| 30 |
+
|
| 31 |
|
| 32 |
except Exception as e:
|
| 33 |
logging.error(f"Application failed to start: {e}", exc_info=True)
|
|
|
|
| 35 |
|
| 36 |
|
| 37 |
if __name__ == "__main__":
|
| 38 |
+
asyncio.run(main())
|
pyproject.toml
CHANGED
|
@@ -8,7 +8,10 @@ dependencies = [
|
|
| 8 |
"fastapi[standard]>=0.115.8",
|
| 9 |
"ipykernel>=6.29.5",
|
| 10 |
"numpy>=2.2.3",
|
|
|
|
| 11 |
"pytest>=8.3.4",
|
|
|
|
|
|
|
| 12 |
]
|
| 13 |
|
| 14 |
[tool.black]
|
|
|
|
| 8 |
"fastapi[standard]>=0.115.8",
|
| 9 |
"ipykernel>=6.29.5",
|
| 10 |
"numpy>=2.2.3",
|
| 11 |
+
"pika>=1.3.2",
|
| 12 |
"pytest>=8.3.4",
|
| 13 |
+
"rabbitmq>=0.2.0",
|
| 14 |
+
"uvicorn>=0.34.0",
|
| 15 |
]
|
| 16 |
|
| 17 |
[tool.black]
|
shell.nix
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{ pkgs ? import <nixpkgs> {} }:
|
| 2 |
+
|
| 3 |
+
let
|
| 4 |
+
# Common environment variables
|
| 5 |
+
envVars = {
|
| 6 |
+
NODE_ENV = "development";
|
| 7 |
+
};
|
| 8 |
+
|
| 9 |
+
in pkgs.mkShell {
|
| 10 |
+
buildInputs = with pkgs; [
|
| 11 |
+
docker
|
| 12 |
+
docker-compose
|
| 13 |
+
nodejs_18
|
| 14 |
+
nodePackages.ts-node
|
| 15 |
+
];
|
| 16 |
+
|
| 17 |
+
shellHook = ''
|
| 18 |
+
echo "Sync packages"
|
| 19 |
+
uv sync
|
| 20 |
+
|
| 21 |
+
# Activate venv
|
| 22 |
+
if [ -d ".venv" ]; then
|
| 23 |
+
source .venv/bin/activate
|
| 24 |
+
else
|
| 25 |
+
echo "Virtual environment not found, creating one..."
|
| 26 |
+
fi
|
| 27 |
+
|
| 28 |
+
alias dev='python3 main.py'
|
| 29 |
+
alias python='python3'
|
| 30 |
+
|
| 31 |
+
which python3
|
| 32 |
+
|
| 33 |
+
'';
|
| 34 |
+
}
|
uv.lock
CHANGED
|
@@ -1,4 +1,5 @@
|
|
| 1 |
version = 1
|
|
|
|
| 2 |
requires-python = ">=3.11"
|
| 3 |
|
| 4 |
[[package]]
|
|
@@ -101,7 +102,7 @@ name = "click"
|
|
| 101 |
version = "8.1.8"
|
| 102 |
source = { registry = "https://pypi.org/simple" }
|
| 103 |
dependencies = [
|
| 104 |
-
{ name = "colorama", marker = "
|
| 105 |
]
|
| 106 |
sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 }
|
| 107 |
wheels = [
|
|
@@ -322,7 +323,7 @@ name = "ipykernel"
|
|
| 322 |
version = "6.29.5"
|
| 323 |
source = { registry = "https://pypi.org/simple" }
|
| 324 |
dependencies = [
|
| 325 |
-
{ name = "appnope", marker = "
|
| 326 |
{ name = "comm" },
|
| 327 |
{ name = "debugpy" },
|
| 328 |
{ name = "ipython" },
|
|
@@ -584,6 +585,15 @@ wheels = [
|
|
| 584 |
{ url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772 },
|
| 585 |
]
|
| 586 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 587 |
[[package]]
|
| 588 |
name = "platformdirs"
|
| 589 |
version = "4.3.6"
|
|
@@ -884,6 +894,17 @@ wheels = [
|
|
| 884 |
{ url = "https://files.pythonhosted.org/packages/17/fc/b79f0b72891cbb9917698add0fede71dfb64e83fa3481a02ed0e78c34be7/pyzmq-26.2.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:17f88622b848805d3f6427ce1ad5a2aa3cf61f12a97e684dab2979802024d460", size = 1399943 },
|
| 885 |
]
|
| 886 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 887 |
[[package]]
|
| 888 |
name = "rich"
|
| 889 |
version = "13.9.4"
|
|
@@ -972,7 +993,10 @@ dependencies = [
|
|
| 972 |
{ name = "fastapi", extra = ["standard"] },
|
| 973 |
{ name = "ipykernel" },
|
| 974 |
{ name = "numpy" },
|
|
|
|
| 975 |
{ name = "pytest" },
|
|
|
|
|
|
|
| 976 |
]
|
| 977 |
|
| 978 |
[package.metadata]
|
|
@@ -980,7 +1004,10 @@ requires-dist = [
|
|
| 980 |
{ name = "fastapi", extras = ["standard"], specifier = ">=0.115.8" },
|
| 981 |
{ name = "ipykernel", specifier = ">=6.29.5" },
|
| 982 |
{ name = "numpy", specifier = ">=2.2.3" },
|
|
|
|
| 983 |
{ name = "pytest", specifier = ">=8.3.4" },
|
|
|
|
|
|
|
| 984 |
]
|
| 985 |
|
| 986 |
[[package]]
|
|
|
|
| 1 |
version = 1
|
| 2 |
+
revision = 1
|
| 3 |
requires-python = ">=3.11"
|
| 4 |
|
| 5 |
[[package]]
|
|
|
|
| 102 |
version = "8.1.8"
|
| 103 |
source = { registry = "https://pypi.org/simple" }
|
| 104 |
dependencies = [
|
| 105 |
+
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
| 106 |
]
|
| 107 |
sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 }
|
| 108 |
wheels = [
|
|
|
|
| 323 |
version = "6.29.5"
|
| 324 |
source = { registry = "https://pypi.org/simple" }
|
| 325 |
dependencies = [
|
| 326 |
+
{ name = "appnope", marker = "sys_platform == 'darwin'" },
|
| 327 |
{ name = "comm" },
|
| 328 |
{ name = "debugpy" },
|
| 329 |
{ name = "ipython" },
|
|
|
|
| 585 |
{ url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772 },
|
| 586 |
]
|
| 587 |
|
| 588 |
+
[[package]]
|
| 589 |
+
name = "pika"
|
| 590 |
+
version = "1.3.2"
|
| 591 |
+
source = { registry = "https://pypi.org/simple" }
|
| 592 |
+
sdist = { url = "https://files.pythonhosted.org/packages/db/db/d4102f356af18f316c67f2cead8ece307f731dd63140e2c71f170ddacf9b/pika-1.3.2.tar.gz", hash = "sha256:b2a327ddddf8570b4965b3576ac77091b850262d34ce8c1d8cb4e4146aa4145f", size = 145029 }
|
| 593 |
+
wheels = [
|
| 594 |
+
{ url = "https://files.pythonhosted.org/packages/f9/f3/f412836ec714d36f0f4ab581b84c491e3f42c6b5b97a6c6ed1817f3c16d0/pika-1.3.2-py3-none-any.whl", hash = "sha256:0779a7c1fafd805672796085560d290213a465e4f6f76a6fb19e378d8041a14f", size = 155415 },
|
| 595 |
+
]
|
| 596 |
+
|
| 597 |
[[package]]
|
| 598 |
name = "platformdirs"
|
| 599 |
version = "4.3.6"
|
|
|
|
| 894 |
{ url = "https://files.pythonhosted.org/packages/17/fc/b79f0b72891cbb9917698add0fede71dfb64e83fa3481a02ed0e78c34be7/pyzmq-26.2.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:17f88622b848805d3f6427ce1ad5a2aa3cf61f12a97e684dab2979802024d460", size = 1399943 },
|
| 895 |
]
|
| 896 |
|
| 897 |
+
[[package]]
|
| 898 |
+
name = "rabbitmq"
|
| 899 |
+
version = "0.2.0"
|
| 900 |
+
source = { registry = "https://pypi.org/simple" }
|
| 901 |
+
dependencies = [
|
| 902 |
+
{ name = "cffi" },
|
| 903 |
+
]
|
| 904 |
+
wheels = [
|
| 905 |
+
{ url = "https://files.pythonhosted.org/packages/bc/1d/6b4397309786eaba2dee82285773c383d41ab4b3ffdb933d9af48de52025/rabbitmq-0.2.0-py2.py3-none-any.whl", hash = "sha256:74cfbc0f365019a8f318cd1ad9b1f85682768568fa3816740df37509a6dfbc2d", size = 7865 },
|
| 906 |
+
]
|
| 907 |
+
|
| 908 |
[[package]]
|
| 909 |
name = "rich"
|
| 910 |
version = "13.9.4"
|
|
|
|
| 993 |
{ name = "fastapi", extra = ["standard"] },
|
| 994 |
{ name = "ipykernel" },
|
| 995 |
{ name = "numpy" },
|
| 996 |
+
{ name = "pika" },
|
| 997 |
{ name = "pytest" },
|
| 998 |
+
{ name = "rabbitmq" },
|
| 999 |
+
{ name = "uvicorn" },
|
| 1000 |
]
|
| 1001 |
|
| 1002 |
[package.metadata]
|
|
|
|
| 1004 |
{ name = "fastapi", extras = ["standard"], specifier = ">=0.115.8" },
|
| 1005 |
{ name = "ipykernel", specifier = ">=6.29.5" },
|
| 1006 |
{ name = "numpy", specifier = ">=2.2.3" },
|
| 1007 |
+
{ name = "pika", specifier = ">=1.3.2" },
|
| 1008 |
{ name = "pytest", specifier = ">=8.3.4" },
|
| 1009 |
+
{ name = "rabbitmq", specifier = ">=0.2.0" },
|
| 1010 |
+
{ name = "uvicorn", specifier = ">=0.34.0" },
|
| 1011 |
]
|
| 1012 |
|
| 1013 |
[[package]]
|