arpakitlib 1.7.69__py3-none-any.whl → 1.7.71__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_check_conn.py +2 -1
- arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_init.py +2 -1
- arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_reinit.py +2 -1
- arpakitlib/_arpakit_project_template/resource/static/healthcheck +1 -0
- arpakitlib/_arpakit_project_template/src/api/create_api_app.py +2 -1
- arpakitlib/_arpakit_project_template/src/core/settings.py +3 -3
- arpakitlib/_arpakit_project_template/src/core/util.py +0 -18
- arpakitlib/_arpakit_project_template/src/db/util.py +21 -0
- arpakitlib/_arpakit_project_template/src/operation_execution/start_operation_executor_worker_for_dev.py +2 -1
- arpakitlib/_arpakit_project_template/src/operation_execution/start_scheduled_operation_creator_worker_for_dev.py +2 -1
- arpakitlib/_arpakit_project_template/src/operation_execution/util.py +21 -0
- arpakitlib/ar_fastapi_util.py +4 -0
- {arpakitlib-1.7.69.dist-info → arpakitlib-1.7.71.dist-info}/METADATA +1 -1
- {arpakitlib-1.7.69.dist-info → arpakitlib-1.7.71.dist-info}/RECORD +18 -17
- {arpakitlib-1.7.69.dist-info → arpakitlib-1.7.71.dist-info}/LICENSE +0 -0
- {arpakitlib-1.7.69.dist-info → arpakitlib-1.7.71.dist-info}/NOTICE +0 -0
- {arpakitlib-1.7.69.dist-info → arpakitlib-1.7.71.dist-info}/WHEEL +0 -0
- {arpakitlib-1.7.69.dist-info → arpakitlib-1.7.71.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
Healthcheck
|
@@ -12,8 +12,9 @@ from src.api.router.main_router import main_api_router
|
|
12
12
|
from src.api.transmitted_api_data import TransmittedAPIData
|
13
13
|
from src.core.const import STATIC_DIRPATH
|
14
14
|
from src.core.settings import get_cached_settings
|
15
|
-
from src.core.util import
|
15
|
+
from src.core.util import get_cached_media_file_storage_in_dir, \
|
16
16
|
get_cached_cache_file_storage_in_dir, get_cached_dump_file_storage_in_dir, setup_logging
|
17
|
+
from src.db.util import get_cached_sqlalchemy_db
|
17
18
|
from src.operation_execution.operation_executor import OperationExecutor
|
18
19
|
from src.operation_execution.scheduled_operations import ALL_SCHEDULED_OPERATIONS
|
19
20
|
|
@@ -13,7 +13,7 @@ from src.core.const import BASE_DIRPATH, ENV_FILEPATH
|
|
13
13
|
class Settings(SimpleSettings):
|
14
14
|
sql_db_url: str | None = (
|
15
15
|
"postgresql://{PROJECT_NAME}:{PROJECT_NAME}@127.0.0.1:{SQL_DB_PORT}/{PROJECT_NAME}"
|
16
|
-
)
|
16
|
+
) if (str("{PROJECT_NAME}") and str("{SQL_DB_PORT}").strip().isdigit()) else None
|
17
17
|
|
18
18
|
sql_db_echo: bool = False
|
19
19
|
|
@@ -29,9 +29,9 @@ class Settings(SimpleSettings):
|
|
29
29
|
|
30
30
|
api_start_scheduled_operation_creator_worker: bool = False
|
31
31
|
|
32
|
-
api_port: int | None = int("{API_PORT}") if "{API_PORT}".isdigit() else None
|
32
|
+
api_port: int | None = int("{API_PORT}") if "{API_PORT}".strip().isdigit() else None
|
33
33
|
|
34
|
-
api_correct_api_key: str | None =
|
34
|
+
api_correct_api_key: str | None = "1"
|
35
35
|
|
36
36
|
var_dirname: str | None = "var"
|
37
37
|
|
@@ -1,13 +1,10 @@
|
|
1
1
|
import asyncio
|
2
|
-
import importlib
|
3
|
-
from contextlib import suppress
|
4
2
|
from datetime import datetime
|
5
3
|
from functools import lru_cache
|
6
4
|
|
7
5
|
from arpakitlib.ar_datetime_util import now_dt
|
8
6
|
from arpakitlib.ar_file_storage_in_dir_util import FileStorageInDir
|
9
7
|
from arpakitlib.ar_logging_util import setup_normal_logging
|
10
|
-
from arpakitlib.ar_sqlalchemy_util import SQLAlchemyDB
|
11
8
|
from arpakitlib.ar_type_util import raise_if_none
|
12
9
|
from src.core.settings import get_cached_settings
|
13
10
|
|
@@ -43,21 +40,6 @@ def get_cached_dump_file_storage_in_dir() -> FileStorageInDir:
|
|
43
40
|
return create_dump_file_storage_in_dir()
|
44
41
|
|
45
42
|
|
46
|
-
def create_sqlalchemy_db() -> SQLAlchemyDB:
|
47
|
-
with suppress(Exception):
|
48
|
-
importlib.import_module("src.db.sqlalchemy_model")
|
49
|
-
|
50
|
-
return SQLAlchemyDB(
|
51
|
-
db_url=get_cached_settings().sql_db_url,
|
52
|
-
db_echo=get_cached_settings().sql_db_echo
|
53
|
-
)
|
54
|
-
|
55
|
-
|
56
|
-
@lru_cache()
|
57
|
-
def get_cached_sqlalchemy_db() -> SQLAlchemyDB:
|
58
|
-
return create_sqlalchemy_db()
|
59
|
-
|
60
|
-
|
61
43
|
def now_local_dt() -> datetime:
|
62
44
|
raise_if_none(get_cached_settings().local_timezone_as_pytz)
|
63
45
|
return now_dt(tz=get_cached_settings().local_timezone_as_pytz)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import importlib
|
2
|
+
from contextlib import suppress
|
3
|
+
from functools import lru_cache
|
4
|
+
|
5
|
+
from arpakitlib.ar_sqlalchemy_util import SQLAlchemyDB
|
6
|
+
from src.core.settings import get_cached_settings
|
7
|
+
|
8
|
+
|
9
|
+
def create_sqlalchemy_db() -> SQLAlchemyDB:
|
10
|
+
with suppress(Exception):
|
11
|
+
importlib.import_module("src.db.sqlalchemy_model")
|
12
|
+
|
13
|
+
return SQLAlchemyDB(
|
14
|
+
db_url=get_cached_settings().sql_db_url,
|
15
|
+
db_echo=get_cached_settings().sql_db_echo
|
16
|
+
)
|
17
|
+
|
18
|
+
|
19
|
+
@lru_cache()
|
20
|
+
def get_cached_sqlalchemy_db() -> SQLAlchemyDB:
|
21
|
+
return create_sqlalchemy_db()
|
@@ -1,5 +1,6 @@
|
|
1
1
|
from arpakitlib.ar_operation_execution_util import OperationExecutorWorker
|
2
|
-
from src.core.util import
|
2
|
+
from src.core.util import setup_logging
|
3
|
+
from src.db.util import get_cached_sqlalchemy_db
|
3
4
|
from src.operation_execution.operation_executor import OperationExecutor
|
4
5
|
|
5
6
|
|
@@ -1,5 +1,6 @@
|
|
1
1
|
from arpakitlib.ar_operation_execution_util import ScheduledOperationCreatorWorker
|
2
|
-
from src.core.util import
|
2
|
+
from src.core.util import setup_logging
|
3
|
+
from src.db.util import get_cached_sqlalchemy_db
|
3
4
|
from src.operation_execution.scheduled_operations import ALL_SCHEDULED_OPERATIONS
|
4
5
|
|
5
6
|
|
@@ -0,0 +1,21 @@
|
|
1
|
+
from datetime import timedelta
|
2
|
+
from functools import lru_cache
|
3
|
+
|
4
|
+
from arpakitlib.ar_operation_execution_util import ScheduledOperationCreatorWorker
|
5
|
+
from src.db.util import get_cached_sqlalchemy_db
|
6
|
+
|
7
|
+
|
8
|
+
def create_scheduled_operation_creator_worker() -> ScheduledOperationCreatorWorker:
|
9
|
+
from src.operation_execution.scheduled_operations import ALL_SCHEDULED_OPERATIONS
|
10
|
+
scheduled_operation_creator_worker = ScheduledOperationCreatorWorker(
|
11
|
+
sqlalchemy_db=get_cached_sqlalchemy_db(),
|
12
|
+
scheduled_operations=ALL_SCHEDULED_OPERATIONS,
|
13
|
+
timeout_after_run=timedelta(seconds=0.1).total_seconds(),
|
14
|
+
timeout_after_err_in_run=timedelta(seconds=1).total_seconds()
|
15
|
+
)
|
16
|
+
return scheduled_operation_creator_worker
|
17
|
+
|
18
|
+
|
19
|
+
@lru_cache()
|
20
|
+
def get_scheduled_operation_creator_worker() -> ScheduledOperationCreatorWorker:
|
21
|
+
return create_scheduled_operation_creator_worker()
|
arpakitlib/ar_fastapi_util.py
CHANGED
@@ -21,6 +21,7 @@ from fastapi import FastAPI, APIRouter, Query, Security, Depends
|
|
21
21
|
from fastapi.openapi.docs import get_swagger_ui_html, get_redoc_html
|
22
22
|
from fastapi.security import APIKeyHeader
|
23
23
|
from pydantic import BaseModel, ConfigDict
|
24
|
+
from starlette import status
|
24
25
|
from starlette.middleware.cors import CORSMiddleware
|
25
26
|
from starlette.staticfiles import StaticFiles
|
26
27
|
|
@@ -221,6 +222,9 @@ def create_handle_exception(
|
|
221
222
|
error_so.error_specification_code.upper().replace(" ", "_").strip()
|
222
223
|
)
|
223
224
|
|
225
|
+
if error_so.error_code == BaseAPIErrorCodes.not_found:
|
226
|
+
status_code = status.HTTP_404_NOT_FOUND
|
227
|
+
|
224
228
|
if _need_exc_info:
|
225
229
|
_logger.error(str(exception), exc_info=exception)
|
226
230
|
else:
|
@@ -61,11 +61,12 @@ arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_8.sh,sha256=47DEQpj8
|
|
61
61
|
arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_9.sh,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
62
62
|
arpakitlib/_arpakit_project_template/manage/settings_check.py,sha256=DeOGoWXgk2_VXpCIFbQgf1k2zcnv4hOLWIVc5BDv80c,260
|
63
63
|
arpakitlib/_arpakit_project_template/manage/settings_generate_env_example.py,sha256=BLLeF4JenexXbO1mMj8X-lB81TG3-QTmN4DjPYEUI8o,288
|
64
|
-
arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_check_conn.py,sha256=
|
65
|
-
arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_init.py,sha256=
|
66
|
-
arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_reinit.py,sha256=
|
64
|
+
arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_check_conn.py,sha256=wv1N33nTGpsT9nk94OePlOSZ-O9UVKlMfRf8y5UeK1Y,213
|
65
|
+
arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_init.py,sha256=cBkdDS4i1dbt0HsV6vyTTZvtCXYTfCdkvCHgVFrafUU,207
|
66
|
+
arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_reinit.py,sha256=YhXC7zwdN3L4MDrNxCaI379M7u27n-BXw5qIAG1uZEE,209
|
67
67
|
arpakitlib/_arpakit_project_template/resource/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
68
68
|
arpakitlib/_arpakit_project_template/resource/static/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
69
|
+
arpakitlib/_arpakit_project_template/resource/static/healthcheck,sha256=IIO7Wvjwlr2-LPSQ7Y8O35hcI6t0_s8zqITDxkYCO8I,11
|
69
70
|
arpakitlib/_arpakit_project_template/resource/static/helloworld,sha256=eH7Hbcr9IMGQjrCTahL5Ht0QWrXNfswrGuIDJkg0Xf8,11
|
70
71
|
arpakitlib/_arpakit_project_template/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
71
72
|
arpakitlib/_arpakit_project_template/src/additional_model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -74,7 +75,7 @@ arpakitlib/_arpakit_project_template/src/api/__init__.py,sha256=47DEQpj8HBSa-_TI
|
|
74
75
|
arpakitlib/_arpakit_project_template/src/api/asgi.py,sha256=a5UBxOyNC8NG3E0ayhiDo3t5tPoB3WtOf2gbZJFWBAA,74
|
75
76
|
arpakitlib/_arpakit_project_template/src/api/auth.py,sha256=Ljq_VjjiAaW3HEzq60nkSI-HkHfuv6j5-8Q6Qs8V9bU,261
|
76
77
|
arpakitlib/_arpakit_project_template/src/api/const.py,sha256=7d4qD5hedqr7QxVzbfsA7E1bNZn2Pm2U8joXGtpANu0,287
|
77
|
-
arpakitlib/_arpakit_project_template/src/api/create_api_app.py,sha256=
|
78
|
+
arpakitlib/_arpakit_project_template/src/api/create_api_app.py,sha256=lDE77W6WkeAeRB_vJY3TXRTa3HeiO-t26eTtG7v8j6U,4594
|
78
79
|
arpakitlib/_arpakit_project_template/src/api/event.py,sha256=58wCVyVSIe_kydWi44M0Wvp7bTnV8xvO30gMXzjbFYc,750
|
79
80
|
arpakitlib/_arpakit_project_template/src/api/router/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
80
81
|
arpakitlib/_arpakit_project_template/src/api/router/main_router.py,sha256=__Z-pGoeooYCub7besFXGJJvZR3V-4IakXd3cKo6ZIM,209
|
@@ -92,18 +93,18 @@ arpakitlib/_arpakit_project_template/src/api/util.py,sha256=47DEQpj8HBSa-_TImW-5
|
|
92
93
|
arpakitlib/_arpakit_project_template/src/business_service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
93
94
|
arpakitlib/_arpakit_project_template/src/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
94
95
|
arpakitlib/_arpakit_project_template/src/core/const.py,sha256=CZZew674y7LhCAlYhvuF5cV4Zb9nQ17j2Tcuj2GEBf4,1232
|
95
|
-
arpakitlib/_arpakit_project_template/src/core/settings.py,sha256=
|
96
|
-
arpakitlib/_arpakit_project_template/src/core/util.py,sha256=
|
96
|
+
arpakitlib/_arpakit_project_template/src/core/settings.py,sha256=QbW0A2UuYMmYG4wOHPbsrm0YdaqA3a1rsmA7k2gQyv8,2147
|
97
|
+
arpakitlib/_arpakit_project_template/src/core/util.py,sha256=5R8gvcZdvuDQes45FBnLC2IDv2Jhajp1VhJJYNKYjMQ,1539
|
97
98
|
arpakitlib/_arpakit_project_template/src/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
98
99
|
arpakitlib/_arpakit_project_template/src/db/sqlalchemy_model.py,sha256=nXtayUkBaVb6tWx5qJgXZLbLOTVAjnSLpSDxBm7yZLc,234
|
99
|
-
arpakitlib/_arpakit_project_template/src/db/util.py,sha256=
|
100
|
+
arpakitlib/_arpakit_project_template/src/db/util.py,sha256=8Jg9TtTwvyxVYIN_W5_lk9y-Pyh8To1aMRFUKCRDuuA,550
|
100
101
|
arpakitlib/_arpakit_project_template/src/operation_execution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
101
102
|
arpakitlib/_arpakit_project_template/src/operation_execution/const.py,sha256=HjupGEDUWVijQlbzxZPI9vBbAVOETUYzYU9pdnc9IcI,176
|
102
103
|
arpakitlib/_arpakit_project_template/src/operation_execution/operation_executor.py,sha256=5sZpn3tVxnmcuIVRD5sbBhiMY5SAqPCc4tHzoNzDe4c,619
|
103
104
|
arpakitlib/_arpakit_project_template/src/operation_execution/scheduled_operations.py,sha256=hBPZIOJAX7ym54s2tJ2QRky15FqqDF9r4yTr8Nh2YqI,985
|
104
|
-
arpakitlib/_arpakit_project_template/src/operation_execution/start_operation_executor_worker_for_dev.py,sha256=
|
105
|
-
arpakitlib/_arpakit_project_template/src/operation_execution/start_scheduled_operation_creator_worker_for_dev.py,sha256=
|
106
|
-
arpakitlib/_arpakit_project_template/src/operation_execution/util.py,sha256=
|
105
|
+
arpakitlib/_arpakit_project_template/src/operation_execution/start_operation_executor_worker_for_dev.py,sha256=uC9KxA3n9ul4YVg2bD4626ikUIv_kLc6TqyUQV_tWtc,626
|
106
|
+
arpakitlib/_arpakit_project_template/src/operation_execution/start_scheduled_operation_creator_worker_for_dev.py,sha256=qZFXZqdrL_vMSeajwhVFZrWhAlyU9G1PjKYMMgZn4sA,597
|
107
|
+
arpakitlib/_arpakit_project_template/src/operation_execution/util.py,sha256=wEplkGcSCA9PV2-BgUNHRpuZnaC6z4FouyzVT-UFm48,886
|
107
108
|
arpakitlib/_arpakit_project_template/src/test_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
108
109
|
arpakitlib/_arpakit_project_template/src/test_data/make_test_data_1.py,sha256=3WVPgRsNCIxWpA-6t_Phe-nFULdHPhS1S_DO11XRmqk,80
|
109
110
|
arpakitlib/_arpakit_project_template/src/test_data/make_test_data_2.py,sha256=MVDc71sj5I1muWin50GwrSxMwYtOOSDOtRmeFErHcXs,80
|
@@ -147,7 +148,7 @@ arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css,sha256=jzPZlgJTFwSdSphk9C
|
|
147
148
|
arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map,sha256=5wq8eXMLU6Zxb45orZPL1zAsBFJReFw6GjYqGpUX3hg,262650
|
148
149
|
arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js,sha256=ffrLZHHEQ_g84A-ul3yWa10Kk09waOAxHcQXPuZuavg,339292
|
149
150
|
arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map,sha256=9UhIW7MqCOZPAz1Sl1IKfZUuhWU0p-LJqrnjjJD9Xhc,1159454
|
150
|
-
arpakitlib/ar_fastapi_util.py,sha256=
|
151
|
+
arpakitlib/ar_fastapi_util.py,sha256=7NcRLArsrZgzihbDLWzI9JAH8i2SKwPwig8UdANq-jw,24700
|
151
152
|
arpakitlib/ar_file_storage_in_dir_util.py,sha256=D3e3rGuHoI6xqAA5mVvEpVVpOWY1jyjNsjj2UhyHRbE,3674
|
152
153
|
arpakitlib/ar_file_util.py,sha256=GUdJYm1tUZnYpY-SIPRHAZBHGra8NKy1eYEI0D5AfhY,489
|
153
154
|
arpakitlib/ar_hash_util.py,sha256=Iqy6KBAOLBQMFLWv676boI5sV7atT2B-fb7aCdHOmIQ,340
|
@@ -176,9 +177,9 @@ arpakitlib/ar_str_util.py,sha256=tFoGSDYoGpfdVHWor5Li9pEOFmDFlHkX-Z8iOy1LK7Y,353
|
|
176
177
|
arpakitlib/ar_type_util.py,sha256=46ZMuWls3uN0Re5T0sfEAmyNUDnxn9yvj6dHivSDZKs,3915
|
177
178
|
arpakitlib/ar_yookassa_api_client_util.py,sha256=sh4fcUkAkdOetFn9JYoTvjcSXP-M1wU04KEY-ECLfLg,5137
|
178
179
|
arpakitlib/ar_zabbix_api_client_util.py,sha256=Q-VR4MvoZ9aHwZeYZr9G3LwN-ANx1T5KFmF6pvPM-9M,6402
|
179
|
-
arpakitlib-1.7.
|
180
|
-
arpakitlib-1.7.
|
181
|
-
arpakitlib-1.7.
|
182
|
-
arpakitlib-1.7.
|
183
|
-
arpakitlib-1.7.
|
184
|
-
arpakitlib-1.7.
|
180
|
+
arpakitlib-1.7.71.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
|
181
|
+
arpakitlib-1.7.71.dist-info/METADATA,sha256=qnzJ63_6S3mfsYCd1NzDVXVh8brXxO9JAvpW_sS0KCI,2824
|
182
|
+
arpakitlib-1.7.71.dist-info/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
|
183
|
+
arpakitlib-1.7.71.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
184
|
+
arpakitlib-1.7.71.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
|
185
|
+
arpakitlib-1.7.71.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|