educommon 3.9.9__py3-none-any.whl → 3.10.0__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.
@@ -12,6 +12,9 @@ from celery import (
12
12
  states,
13
13
  Task,
14
14
  )
15
+ from celery.exceptions import (
16
+ Ignore,
17
+ )
15
18
  from celery.schedules import (
16
19
  maybe_schedule,
17
20
  )
@@ -184,6 +187,8 @@ class AsyncTask(Task):
184
187
  'description': '',
185
188
  # прогресс выполнения задачи
186
189
  'progress': 'Неизвестно',
190
+ 'exc_type': '',
191
+ 'exc_message': '',
187
192
  }
188
193
  self.update_state(
189
194
  state=AsyncTaskStatus.to_state(AsyncTaskStatus.STARTED),
@@ -280,6 +285,9 @@ class AsyncTask(Task):
280
285
 
281
286
  Запускается, если во время выполнения задачи возникла ошибка.
282
287
  """
288
+ self.state['exc_type'] = type(exc).__name__
289
+ self.state['exc_message'] = exc.__str__()
290
+
283
291
  self._update_running_task(
284
292
  task_id,
285
293
  status=AsyncTaskStatus.FAILURE,
@@ -323,3 +331,36 @@ class PeriodicAsyncTask(AsyncTask):
323
331
  'options': cls.options or {},
324
332
  'relative': cls.relative,
325
333
  }
334
+
335
+
336
+ class PeriodicTaskLocker(TaskLocker):
337
+ """Класс отвечающий за блокировку задач.
338
+
339
+ Переопределён для возможности игнорирования повторного запуска для уже
340
+ запущенных периодических задач.
341
+ """
342
+
343
+ def raise_if_locked(self, message: Optional[str] = None):
344
+ """Если блокировано, то вызывает исключение."""
345
+ if self.is_locked():
346
+ self.debug(f'Add failed. Task {self.task_name} currently locked ({self.params})')
347
+
348
+ raise Ignore()
349
+
350
+
351
+ class UniquePeriodicAsyncTask(PeriodicAsyncTask):
352
+ """Уникальные периодические задачи."""
353
+
354
+ abstract = True
355
+ lock_expire_seconds = 60 * 60
356
+
357
+ locker_class = PeriodicTaskLocker
358
+
359
+ @property
360
+ def locker_config(self) -> dict:
361
+ """Настройки для механизма блокировок. """
362
+ return {
363
+ 'lock_params': {'task_name': self.name},
364
+ 'lock_message': f'Task [{self.__name__}] is running',
365
+ 'lock_expire': self.lock_expire_seconds,
366
+ }
educommon/version.conf CHANGED
@@ -4,8 +4,8 @@
4
4
  # нормальной установки обновлений.
5
5
 
6
6
  [version]
7
- BRANCH = tags/3.9.9^0
8
- VERSION = 3.9.9
9
- REVISION = 2d3b71332d666fd04710cba539889684db787d3b
10
- VERSION_DATE = 02.07.2024
11
- REVISION_DATE = 02.07.2024
7
+ BRANCH = tags/3.10.0^0
8
+ VERSION = 3.10.0
9
+ REVISION = b22dda296d7f58eb45bb87633d1a1d4b45afe36b
10
+ VERSION_DATE = 27.08.2024
11
+ REVISION_DATE = 27.08.2024
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: educommon
3
- Version: 3.9.9
3
+ Version: 3.10.0
4
4
  Summary: Общая кодовая база для проектов БЦ Образование
5
5
  Home-page: https://stash.bars-open.ru/projects/EDUBASE/repos/educommon
6
6
  Author: BARS Group
@@ -1,6 +1,6 @@
1
1
  educommon/__init__.py,sha256=fvsBDL7g8HgOTd-JHOh7TSvMcnUauvGVgPuyA2Z9hUI,419
2
2
  educommon/thread_data.py,sha256=n0XtdesP9H92O3rJ8K6fVnJLiHqyJEfh2xpuT36wzxs,61
3
- educommon/version.conf,sha256=q0D3hPkCDlx0wZTT80WA8kCxLNImlP4GI6vr_-h8jfs,450
3
+ educommon/version.conf,sha256=GEc3p9Cz8yLJMP33CoXa2gpl4l7N-Dv8Rdbzq8JeLPA,452
4
4
  educommon/about/README.rst,sha256=U48UW5jv-8qHyaV56atzzkNMvzHKXVcWSb_NR06PnMo,2685
5
5
  educommon/about/__init__.py,sha256=H1W0IgW-qX9LCZ49GOJzHdmQGHhh-MA6U1xmNx7WnfM,132
6
6
  educommon/about/apps.py,sha256=GrpJAOE2sF0ukWsqugP_WJS88DO4aL-T3kTLprrJrcA,259
@@ -21,7 +21,7 @@ educommon/async_task/exceptions.py,sha256=PaaG2nqP0G2eZ-p0yssca2hhxIccil6MYKH6Zt
21
21
  educommon/async_task/helpers.py,sha256=HihuIHrszhVQAb-Cs6-l4npnlNAgctItGBJ-oIPQX74,2706
22
22
  educommon/async_task/locker.py,sha256=TwVFhuEGsK0JHPXsWuqx7t2Op2mUKETY5EvHSeuKjc8,3844
23
23
  educommon/async_task/models.py,sha256=pICrDFr4Vq6KWpa28NIALP45aLs0lqP7YC2p1IQDFSc,7430
24
- educommon/async_task/tasks.py,sha256=A6tIuDyqMo9pPEezluyO8_Gs_XerMvWdFmluZ6VjFwI,11537
24
+ educommon/async_task/tasks.py,sha256=T0INbjknXspeMleUkxPSGwJoKJy1_ZSDed4kbQ-RK44,12929
25
25
  educommon/async_task/ui.py,sha256=LD7RwM4-6M_6ZO3Ulwy6_lK7rDPcddg-gB6EOV65494,5829
26
26
  educommon/async_task/migrations/0001_initial.py,sha256=W0HfBmhatmQ7Dy4giGeqaZNtLHiEVAvJqx0AvHaxGZ0,3677
27
27
  educommon/async_task/migrations/0002_task_type_and_status_data.py,sha256=rDGxKnbwu4OqfcodFwA_TR-kfDGRKJhivEBFKuurM30,3359
@@ -344,8 +344,8 @@ educommon/ws_log/smev/exceptions.py,sha256=lmy7o2T3dJkqgIhG07qyh5yPqO3qZAYABuT4J
344
344
  educommon/ws_log/templates/report/smev_logs.xlsx,sha256=nnYgB0Z_ix8HoxsRICjsZfFRQBdra-5Gd8nWhCxTjYg,10439
345
345
  educommon/ws_log/templates/ui-js/smev-logs-list-window.js,sha256=AGup3D8GTJSY9WdDPj0zBJeYQBFOmGgcbxPOJbKK-nY,513
346
346
  educommon/ws_log/templates/ui-js/smev-logs-report-setting-window.js,sha256=nQ7QYK9frJcE7g7kIt6INg9TlEEJAPPayBJgRaoTePA,1103
347
- educommon-3.9.9.dist-info/METADATA,sha256=3pTRDtYLzRZF949mWKXop0DcwX8K0Qf3kFlj8X_0xeQ,1562
348
- educommon-3.9.9.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
349
- educommon-3.9.9.dist-info/dependency_links.txt,sha256=RNlr4t-BxZRm7e_IfVo1ikr5ln-7viimzLHvQMO1C_Q,43
350
- educommon-3.9.9.dist-info/top_level.txt,sha256=z5fbW7bz_0V1foUm_FGcZ9_MTpW3N1dBN7-kEmMowl4,10
351
- educommon-3.9.9.dist-info/RECORD,,
347
+ educommon-3.10.0.dist-info/METADATA,sha256=-bS0yfIclXtDEmBJDKnsIjTI7LKXKQnThnbmAZjjA4g,1563
348
+ educommon-3.10.0.dist-info/WHEEL,sha256=Mdi9PDNwEZptOjTlUcAth7XJDFtKrHYaQMPulZeBCiQ,91
349
+ educommon-3.10.0.dist-info/dependency_links.txt,sha256=RNlr4t-BxZRm7e_IfVo1ikr5ln-7viimzLHvQMO1C_Q,43
350
+ educommon-3.10.0.dist-info/top_level.txt,sha256=z5fbW7bz_0V1foUm_FGcZ9_MTpW3N1dBN7-kEmMowl4,10
351
+ educommon-3.10.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: setuptools (73.0.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5