arpakitlib 1.7.53__py3-none-any.whl → 1.7.55__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/src/api/start_api_for_dev_with_reload.py +9 -0
- arpakitlib/ar_http_request_util.py +2 -2
- arpakitlib/ar_operation_execution_util.py +76 -13
- {arpakitlib-1.7.53.dist-info → arpakitlib-1.7.55.dist-info}/METADATA +1 -1
- {arpakitlib-1.7.53.dist-info → arpakitlib-1.7.55.dist-info}/RECORD +9 -8
- {arpakitlib-1.7.53.dist-info → arpakitlib-1.7.55.dist-info}/LICENSE +0 -0
- {arpakitlib-1.7.53.dist-info → arpakitlib-1.7.55.dist-info}/NOTICE +0 -0
- {arpakitlib-1.7.53.dist-info → arpakitlib-1.7.55.dist-info}/WHEEL +0 -0
- {arpakitlib-1.7.53.dist-info → arpakitlib-1.7.55.dist-info}/entry_points.txt +0 -0
@@ -59,7 +59,7 @@ def sync_make_http_request(
|
|
59
59
|
response.raise_for_status()
|
60
60
|
return response
|
61
61
|
except BaseException as exception:
|
62
|
-
_logger.warning(f"{tries_counter}/{max_tries_} {method} {url} {params}")
|
62
|
+
_logger.warning(f"{tries_counter}/{max_tries_}. {method} {url} {params}, exception={exception}")
|
63
63
|
if tries_counter >= max_tries_:
|
64
64
|
raise exception
|
65
65
|
sync_safe_sleep(timedelta(seconds=0.1).total_seconds())
|
@@ -105,7 +105,7 @@ async def async_make_http_request(
|
|
105
105
|
await response.read()
|
106
106
|
return response
|
107
107
|
except BaseException as exception:
|
108
|
-
_logger.warning(f"{tries_counter}/{max_tries_} {method} {url} {params}")
|
108
|
+
_logger.warning(f"{tries_counter}/{max_tries_}. {method} {url} {params}, exception={exception}")
|
109
109
|
if tries_counter >= max_tries_:
|
110
110
|
raise exception
|
111
111
|
await async_safe_sleep(timedelta(seconds=0.1).total_seconds())
|
@@ -19,6 +19,7 @@ from arpakitlib.ar_dict_util import combine_dicts
|
|
19
19
|
from arpakitlib.ar_sleep_util import sync_safe_sleep, async_safe_sleep
|
20
20
|
from arpakitlib.ar_sqlalchemy_model_util import OperationDBM, StoryLogDBM, BaseOperationTypes
|
21
21
|
from arpakitlib.ar_sqlalchemy_util import SQLAlchemyDB
|
22
|
+
from arpakitlib.ar_type_util import raise_for_type
|
22
23
|
|
23
24
|
_ARPAKIT_LIB_MODULE_VERSION = "3.0"
|
24
25
|
|
@@ -27,14 +28,16 @@ _logger = logging.getLogger(__name__)
|
|
27
28
|
|
28
29
|
def get_operation_for_execution(
|
29
30
|
*,
|
30
|
-
|
31
|
+
session: Session | None = None,
|
32
|
+
sqlalchemy_db: SQLAlchemyDB | None = None,
|
31
33
|
filter_operation_types: list[str] | str | None = None
|
32
34
|
) -> OperationDBM | None:
|
33
35
|
if isinstance(filter_operation_types, str):
|
34
36
|
filter_operation_types = [filter_operation_types]
|
35
|
-
|
37
|
+
|
38
|
+
def func(session_: Session):
|
36
39
|
query = (
|
37
|
-
|
40
|
+
session_
|
38
41
|
.query(OperationDBM)
|
39
42
|
.filter(OperationDBM.status == OperationDBM.Statuses.waiting_for_execution)
|
40
43
|
)
|
@@ -42,24 +45,84 @@ def get_operation_for_execution(
|
|
42
45
|
query = query.filter(OperationDBM.type.in_(filter_operation_types))
|
43
46
|
query = query.order_by(asc(OperationDBM.creation_dt))
|
44
47
|
operation_dbm: OperationDBM | None = query.first()
|
45
|
-
|
48
|
+
return operation_dbm
|
49
|
+
|
50
|
+
if session is not None:
|
51
|
+
return func(session_=session)
|
52
|
+
elif sqlalchemy_db is not None:
|
53
|
+
with sqlalchemy_db.new_session() as session:
|
54
|
+
return func(session_=session)
|
55
|
+
else:
|
56
|
+
raise ValueError("session is None and sqlalchemy_db is None")
|
46
57
|
|
47
58
|
|
48
59
|
def get_operation_by_id(
|
49
60
|
*,
|
50
|
-
session: Session,
|
61
|
+
session: Session | None = None,
|
62
|
+
sqlalchemy_db: SQLAlchemyDB | None = None,
|
51
63
|
filter_operation_id: int,
|
52
64
|
raise_if_not_found: bool = False
|
53
65
|
) -> OperationDBM | None:
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
66
|
+
def func(session_: Session):
|
67
|
+
query = (
|
68
|
+
session_
|
69
|
+
.query(OperationDBM)
|
70
|
+
.filter(OperationDBM.id == filter_operation_id)
|
71
|
+
)
|
72
|
+
if raise_if_not_found:
|
73
|
+
return query.one()
|
74
|
+
else:
|
75
|
+
return query.one_or_none()
|
76
|
+
|
77
|
+
if session is not None:
|
78
|
+
return func(session_=session)
|
79
|
+
elif sqlalchemy_db is not None:
|
80
|
+
with sqlalchemy_db.new_session() as session:
|
81
|
+
return func(session_=session)
|
82
|
+
else:
|
83
|
+
raise ValueError("session is None and sqlalchemy_db is None")
|
84
|
+
|
85
|
+
|
86
|
+
def remove_operations(
|
87
|
+
*,
|
88
|
+
session: Session | None = None,
|
89
|
+
sqlalchemy_db: SQLAlchemyDB | None = None,
|
90
|
+
filter_operation_ids: list[int] | int | None = None,
|
91
|
+
filter_operation_types: list[str] | str | None = None,
|
92
|
+
filter_operation_statuses: list[str] | str | None = None
|
93
|
+
):
|
94
|
+
if isinstance(filter_operation_ids, int):
|
95
|
+
filter_operation_ids = [filter_operation_ids]
|
96
|
+
if isinstance(filter_operation_types, str):
|
97
|
+
filter_operation_types = [filter_operation_types]
|
98
|
+
if isinstance(filter_operation_statuses, str):
|
99
|
+
filter_operation_statuses = [filter_operation_statuses]
|
100
|
+
|
101
|
+
if filter_operation_ids is not None:
|
102
|
+
raise_for_type(filter_operation_ids, list)
|
103
|
+
if filter_operation_types is not None:
|
104
|
+
raise_for_type(filter_operation_types, list)
|
105
|
+
if filter_operation_statuses is not None:
|
106
|
+
raise_for_type(filter_operation_statuses, list)
|
107
|
+
|
108
|
+
def func(session_: Session):
|
109
|
+
query = session_.query(OperationDBM)
|
110
|
+
if filter_operation_ids is not None:
|
111
|
+
query = query.filter(OperationDBM.id.in_(filter_operation_ids))
|
112
|
+
if filter_operation_types is not None:
|
113
|
+
query = query.filter(OperationDBM.type.in_(filter_operation_types))
|
114
|
+
if filter_operation_statuses is not None:
|
115
|
+
query = query.filter(OperationDBM.status.in_(filter_operation_statuses))
|
116
|
+
query.delete()
|
117
|
+
session_.commit()
|
118
|
+
|
119
|
+
if session is not None:
|
120
|
+
return func(session_=session)
|
121
|
+
elif sqlalchemy_db is not None:
|
122
|
+
with sqlalchemy_db.new_session() as session:
|
123
|
+
return func(session_=session)
|
61
124
|
else:
|
62
|
-
|
125
|
+
raise ValueError("session is None and sqlalchemy_db is None")
|
63
126
|
|
64
127
|
|
65
128
|
class BaseOperationExecutor:
|
@@ -86,6 +86,7 @@ arpakitlib/_arpakit_project_template/src/api/schema/v1/__init__.py,sha256=47DEQp
|
|
86
86
|
arpakitlib/_arpakit_project_template/src/api/schema/v1/in_.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
87
87
|
arpakitlib/_arpakit_project_template/src/api/schema/v1/out.py,sha256=odc-UyxBwUPh4t0H6qIuzAsBA_Qrm3H2qP-YBgJpaKc,164
|
88
88
|
arpakitlib/_arpakit_project_template/src/api/start_api_for_dev.py,sha256=BwROGTR8Hm1ewx_Z0k8HXeql4RIItCdCtP_hmhTT_PM,344
|
89
|
+
arpakitlib/_arpakit_project_template/src/api/start_api_for_dev_with_reload.py,sha256=xg2SFemhe8KmmoYvaG8zkFZyonzxdxcHuugjS3i0q0I,151
|
89
90
|
arpakitlib/_arpakit_project_template/src/api/transmitted_api_data.py,sha256=YtpATqzN216e76W5QOuzN-Vo6343PVDiHpKWYQ6oqyU,278
|
90
91
|
arpakitlib/_arpakit_project_template/src/api/util.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
91
92
|
arpakitlib/_arpakit_project_template/src/business_service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -148,7 +149,7 @@ arpakitlib/ar_fastapi_util.py,sha256=e4Tgz7sPJk-wqMc2sNsBZ7ZVXo2lMnaOq5WY7CbgvMk
|
|
148
149
|
arpakitlib/ar_file_storage_in_dir_util.py,sha256=D3e3rGuHoI6xqAA5mVvEpVVpOWY1jyjNsjj2UhyHRbE,3674
|
149
150
|
arpakitlib/ar_file_util.py,sha256=07xCF7paAUP2JUyfpeX0l3N1oCSma7qAcBmrCIZVi3g,452
|
150
151
|
arpakitlib/ar_hash_util.py,sha256=Iqy6KBAOLBQMFLWv676boI5sV7atT2B-fb7aCdHOmIQ,340
|
151
|
-
arpakitlib/ar_http_request_util.py,sha256=
|
152
|
+
arpakitlib/ar_http_request_util.py,sha256=_HWsB6FSwnrendUfduFAzpn3zcaeH59TpYbHqAFR5m4,3697
|
152
153
|
arpakitlib/ar_ip_util.py,sha256=aEAa1Hvobh9DWX7cmBAPLqnXSTiKe2hRk-WJaiKMaI8,1009
|
153
154
|
arpakitlib/ar_json_db_util.py,sha256=CEyhIU4WuNmX5mqwBVYxUKSdpFelXvWmf_tJ1fuxMSE,7187
|
154
155
|
arpakitlib/ar_json_util.py,sha256=GwHDdrBWiJBHSc07Qe0aN1Gp_uM0pYpTwzU9JAgsKAo,972
|
@@ -159,7 +160,7 @@ arpakitlib/ar_logging_util.py,sha256=Gyd7B9k0glIXPm6dASiigWLq9LC9lw6vhXTCeWpY5PY
|
|
159
160
|
arpakitlib/ar_mongodb_util.py,sha256=2ECkTnGAZ92qxioL-fmN6R4yZOSr3bXdXLWTzT1C3vk,4038
|
160
161
|
arpakitlib/ar_need_type_util.py,sha256=xq5bbAXJG-93CRVZUcLW0ZdM22rj-ZUW17C5hX_5grg,1699
|
161
162
|
arpakitlib/ar_openai_api_client_util.py,sha256=dHUbfg1sVVCjsNl_fra3iCMEz1bR-Hk9fE-DdYbu7Wc,1215
|
162
|
-
arpakitlib/ar_operation_execution_util.py,sha256=
|
163
|
+
arpakitlib/ar_operation_execution_util.py,sha256=XMS5bLM-NubLv7HuTnt0Vi6YnE42pu3dJso7HRpBBKk,17454
|
163
164
|
arpakitlib/ar_parse_command.py,sha256=-s61xcATIsfw1eV_iD3xi-grsitbGzSDoAFc5V0OFy4,3447
|
164
165
|
arpakitlib/ar_postgresql_util.py,sha256=1AuLjEaa1Lg4pzn-ukCVnDi35Eg1k91APRTqZhIJAdo,945
|
165
166
|
arpakitlib/ar_run_cmd_util.py,sha256=D_rPavKMmWkQtwvZFz-Io5Ak8eSODHkcFeLPzNVC68g,1072
|
@@ -173,9 +174,9 @@ arpakitlib/ar_str_util.py,sha256=oCEtQ_TTn35OEz9jCNLjbhopq76JmaifD_iYR-nEJJ4,214
|
|
173
174
|
arpakitlib/ar_type_util.py,sha256=e6Ch8I_B3FMJMj-fiZvTwtGde4hxSa48fGt5g8RlV6I,2301
|
174
175
|
arpakitlib/ar_yookassa_api_client_util.py,sha256=sh4fcUkAkdOetFn9JYoTvjcSXP-M1wU04KEY-ECLfLg,5137
|
175
176
|
arpakitlib/ar_zabbix_api_client_util.py,sha256=Q-VR4MvoZ9aHwZeYZr9G3LwN-ANx1T5KFmF6pvPM-9M,6402
|
176
|
-
arpakitlib-1.7.
|
177
|
-
arpakitlib-1.7.
|
178
|
-
arpakitlib-1.7.
|
179
|
-
arpakitlib-1.7.
|
180
|
-
arpakitlib-1.7.
|
181
|
-
arpakitlib-1.7.
|
177
|
+
arpakitlib-1.7.55.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
|
178
|
+
arpakitlib-1.7.55.dist-info/METADATA,sha256=qpPGyXE5Wi7kdR23LoVyEMOiYlsRzxGwRXrQDgwvjEM,2824
|
179
|
+
arpakitlib-1.7.55.dist-info/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
|
180
|
+
arpakitlib-1.7.55.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
181
|
+
arpakitlib-1.7.55.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
|
182
|
+
arpakitlib-1.7.55.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|