arpakitlib 1.7.94__py3-none-any.whl → 1.7.95__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/ar_operation_execution_util.py +14 -7
- {arpakitlib-1.7.94.dist-info → arpakitlib-1.7.95.dist-info}/METADATA +1 -1
- {arpakitlib-1.7.94.dist-info → arpakitlib-1.7.95.dist-info}/RECORD +7 -7
- {arpakitlib-1.7.94.dist-info → arpakitlib-1.7.95.dist-info}/LICENSE +0 -0
- {arpakitlib-1.7.94.dist-info → arpakitlib-1.7.95.dist-info}/NOTICE +0 -0
- {arpakitlib-1.7.94.dist-info → arpakitlib-1.7.95.dist-info}/WHEEL +0 -0
- {arpakitlib-1.7.94.dist-info → arpakitlib-1.7.95.dist-info}/entry_points.txt +0 -0
@@ -31,7 +31,8 @@ def get_operation_for_execution(
|
|
31
31
|
*,
|
32
32
|
session: Session | None = None,
|
33
33
|
sqlalchemy_db: SQLAlchemyDB | None = None,
|
34
|
-
filter_operation_types: list[str] | str | None = None
|
34
|
+
filter_operation_types: list[str] | str | None = None,
|
35
|
+
lock: bool = False
|
35
36
|
) -> OperationDBM | None:
|
36
37
|
if isinstance(filter_operation_types, str):
|
37
38
|
filter_operation_types = [filter_operation_types]
|
@@ -44,6 +45,10 @@ def get_operation_for_execution(
|
|
44
45
|
)
|
45
46
|
if filter_operation_types:
|
46
47
|
query = query.filter(OperationDBM.type.in_(filter_operation_types))
|
48
|
+
|
49
|
+
if lock:
|
50
|
+
query = query.with_for_update()
|
51
|
+
|
47
52
|
query = query.order_by(asc(OperationDBM.creation_dt))
|
48
53
|
operation_dbm: OperationDBM | None = query.first()
|
49
54
|
return operation_dbm
|
@@ -160,7 +165,7 @@ class BaseOperationExecutor:
|
|
160
165
|
|
161
166
|
with self.sql_alchemy_db.new_session() as session:
|
162
167
|
operation_dbm: OperationDBM = get_operation_by_id(
|
163
|
-
session=session, filter_operation_id=operation_dbm.id, raise_if_not_found=True
|
168
|
+
session=session, filter_operation_id=operation_dbm.id, raise_if_not_found=True, lock=True
|
164
169
|
)
|
165
170
|
operation_dbm.execution_start_dt = now_utc_dt()
|
166
171
|
operation_dbm.status = OperationDBM.Statuses.executing
|
@@ -189,7 +194,7 @@ class BaseOperationExecutor:
|
|
189
194
|
with self.sql_alchemy_db.new_session() as session:
|
190
195
|
|
191
196
|
operation_dbm: OperationDBM = get_operation_by_id(
|
192
|
-
session=session, filter_operation_id=operation_dbm.id, raise_if_not_found=True
|
197
|
+
session=session, filter_operation_id=operation_dbm.id, raise_if_not_found=True, lock=True
|
193
198
|
)
|
194
199
|
operation_dbm.execution_finish_dt = now_utc_dt()
|
195
200
|
if exception:
|
@@ -251,7 +256,7 @@ class BaseOperationExecutor:
|
|
251
256
|
|
252
257
|
with self.sql_alchemy_db.new_session() as session:
|
253
258
|
operation_dbm: OperationDBM = get_operation_by_id(
|
254
|
-
session=session, filter_operation_id=operation_dbm.id, raise_if_not_found=True
|
259
|
+
session=session, filter_operation_id=operation_dbm.id, raise_if_not_found=True, lock=True
|
255
260
|
)
|
256
261
|
operation_dbm.execution_start_dt = now_utc_dt()
|
257
262
|
operation_dbm.status = OperationDBM.Statuses.executing
|
@@ -280,7 +285,7 @@ class BaseOperationExecutor:
|
|
280
285
|
with self.sql_alchemy_db.new_session() as session:
|
281
286
|
|
282
287
|
operation_dbm: OperationDBM = get_operation_by_id(
|
283
|
-
session=session, filter_operation_id=operation_dbm.id, raise_if_not_found=True
|
288
|
+
session=session, filter_operation_id=operation_dbm.id, raise_if_not_found=True, lock=True
|
284
289
|
)
|
285
290
|
operation_dbm.execution_finish_dt = now_utc_dt()
|
286
291
|
if exception:
|
@@ -352,7 +357,8 @@ class OperationExecutorWorker(BaseWorker):
|
|
352
357
|
def sync_run(self):
|
353
358
|
operation_dbm: OperationDBM | None = get_operation_for_execution(
|
354
359
|
sqlalchemy_db=self.sqlalchemy_db,
|
355
|
-
filter_operation_types=self.filter_operation_types
|
360
|
+
filter_operation_types=self.filter_operation_types,
|
361
|
+
lock=True
|
356
362
|
)
|
357
363
|
if not operation_dbm:
|
358
364
|
return
|
@@ -371,7 +377,8 @@ class OperationExecutorWorker(BaseWorker):
|
|
371
377
|
async def async_run(self):
|
372
378
|
operation_dbm: OperationDBM | None = get_operation_for_execution(
|
373
379
|
sqlalchemy_db=self.sqlalchemy_db,
|
374
|
-
filter_operation_types=self.filter_operation_types
|
380
|
+
filter_operation_types=self.filter_operation_types,
|
381
|
+
lock=True
|
375
382
|
)
|
376
383
|
if not operation_dbm:
|
377
384
|
return
|
@@ -164,7 +164,7 @@ arpakitlib/ar_logging_util.py,sha256=mx3H6CzX9dsh29ruFmYnva8lL6mwvdBXmeHH9E2tvu8
|
|
164
164
|
arpakitlib/ar_mongodb_util.py,sha256=2ECkTnGAZ92qxioL-fmN6R4yZOSr3bXdXLWTzT1C3vk,4038
|
165
165
|
arpakitlib/ar_need_type_util.py,sha256=GETiREPMEYhch-yU6T--Bdawlbb04Jp1Qy7cOsUlIeA,2228
|
166
166
|
arpakitlib/ar_openai_api_client_util.py,sha256=_XmlApvHFMSyjvZydPa_kASIt9LsFrZmSC7YEzIG8Bg,1806
|
167
|
-
arpakitlib/ar_operation_execution_util.py,sha256=
|
167
|
+
arpakitlib/ar_operation_execution_util.py,sha256=pSOpYDDT7HE0MgoW3eolJ2bI4eIYI8TUy0jlulmcRHQ,18709
|
168
168
|
arpakitlib/ar_parse_command.py,sha256=-s61xcATIsfw1eV_iD3xi-grsitbGzSDoAFc5V0OFy4,3447
|
169
169
|
arpakitlib/ar_postgresql_util.py,sha256=1AuLjEaa1Lg4pzn-ukCVnDi35Eg1k91APRTqZhIJAdo,945
|
170
170
|
arpakitlib/ar_run_cmd_util.py,sha256=D_rPavKMmWkQtwvZFz-Io5Ak8eSODHkcFeLPzNVC68g,1072
|
@@ -178,9 +178,9 @@ arpakitlib/ar_str_util.py,sha256=tFoGSDYoGpfdVHWor5Li9pEOFmDFlHkX-Z8iOy1LK7Y,353
|
|
178
178
|
arpakitlib/ar_type_util.py,sha256=s0NsTM7mV3HuwyRwyYLdNn7Ep2HbyI4FIr-dd8x0lfI,3734
|
179
179
|
arpakitlib/ar_yookassa_api_client_util.py,sha256=sh4fcUkAkdOetFn9JYoTvjcSXP-M1wU04KEY-ECLfLg,5137
|
180
180
|
arpakitlib/ar_zabbix_api_client_util.py,sha256=Q-VR4MvoZ9aHwZeYZr9G3LwN-ANx1T5KFmF6pvPM-9M,6402
|
181
|
-
arpakitlib-1.7.
|
182
|
-
arpakitlib-1.7.
|
183
|
-
arpakitlib-1.7.
|
184
|
-
arpakitlib-1.7.
|
185
|
-
arpakitlib-1.7.
|
186
|
-
arpakitlib-1.7.
|
181
|
+
arpakitlib-1.7.95.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
|
182
|
+
arpakitlib-1.7.95.dist-info/METADATA,sha256=7AdfJVZL5IKD-fAW1diQvDtisHJlpoQ1EaAxaWbHnEU,2824
|
183
|
+
arpakitlib-1.7.95.dist-info/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
|
184
|
+
arpakitlib-1.7.95.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
185
|
+
arpakitlib-1.7.95.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
|
186
|
+
arpakitlib-1.7.95.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|