p1-taskqueue 0.1.10__tar.gz → 0.1.12__tar.gz

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.
Files changed (19) hide show
  1. {p1_taskqueue-0.1.10 → p1_taskqueue-0.1.12}/PKG-INFO +6 -5
  2. {p1_taskqueue-0.1.10 → p1_taskqueue-0.1.12}/pyproject.toml +6 -5
  3. {p1_taskqueue-0.1.10 → p1_taskqueue-0.1.12}/src/p1_taskqueue.egg-info/PKG-INFO +6 -5
  4. {p1_taskqueue-0.1.10 → p1_taskqueue-0.1.12}/src/p1_taskqueue.egg-info/requires.txt +5 -4
  5. {p1_taskqueue-0.1.10 → p1_taskqueue-0.1.12}/src/taskqueue/celery_app.py +2 -0
  6. {p1_taskqueue-0.1.10 → p1_taskqueue-0.1.12}/src/taskqueue/cmanager.py +10 -8
  7. {p1_taskqueue-0.1.10 → p1_taskqueue-0.1.12}/README.md +0 -0
  8. {p1_taskqueue-0.1.10 → p1_taskqueue-0.1.12}/setup.cfg +0 -0
  9. {p1_taskqueue-0.1.10 → p1_taskqueue-0.1.12}/src/p1_taskqueue.egg-info/SOURCES.txt +0 -0
  10. {p1_taskqueue-0.1.10 → p1_taskqueue-0.1.12}/src/p1_taskqueue.egg-info/dependency_links.txt +0 -0
  11. {p1_taskqueue-0.1.10 → p1_taskqueue-0.1.12}/src/p1_taskqueue.egg-info/top_level.txt +0 -0
  12. {p1_taskqueue-0.1.10 → p1_taskqueue-0.1.12}/src/taskqueue/__init__.py +0 -0
  13. {p1_taskqueue-0.1.10 → p1_taskqueue-0.1.12}/src/taskqueue/libs/__init__.py +0 -0
  14. {p1_taskqueue-0.1.10 → p1_taskqueue-0.1.12}/src/taskqueue/libs/helper_test.py +0 -0
  15. {p1_taskqueue-0.1.10 → p1_taskqueue-0.1.12}/tests/test_celery_app.py +0 -0
  16. {p1_taskqueue-0.1.10 → p1_taskqueue-0.1.12}/tests/test_cmanager.py +0 -0
  17. {p1_taskqueue-0.1.10 → p1_taskqueue-0.1.12}/tests/test_helper_test_functions.py +0 -0
  18. {p1_taskqueue-0.1.10 → p1_taskqueue-0.1.12}/tests/test_return_values.py +0 -0
  19. {p1_taskqueue-0.1.10 → p1_taskqueue-0.1.12}/tests/test_test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: p1-taskqueue
3
- Version: 0.1.10
3
+ Version: 0.1.12
4
4
  Summary: A Task Queue Wrapper for Dekoruma Backend
5
5
  Author-email: Chalvin <engineering@dekoruma.com>
6
6
  Project-URL: Homepage, https://github.com/Dekoruma/p1-taskqueue
@@ -13,11 +13,12 @@ Classifier: Programming Language :: Python :: 3.11
13
13
  Classifier: Programming Language :: Python :: 3.12
14
14
  Requires-Python: >=3.11
15
15
  Description-Content-Type: text/markdown
16
- Requires-Dist: celery>=5.4.0
17
- Requires-Dist: flower>=2.0.1
18
- Requires-Dist: redis>=6.2.0
19
- Requires-Dist: kombu>=5.3.4
16
+ Requires-Dist: celery>=5.5.3
17
+ Requires-Dist: redis>=6.4.0
18
+ Requires-Dist: kombu>=5.5.4
20
19
  Requires-Dist: django>=4.0.0
20
+ Requires-Dist: django-celery-results>=2.6.0
21
+ Requires-Dist: django-celery-beat>=2.8.1
21
22
  Provides-Extra: dev
22
23
  Requires-Dist: pytest>=7.0.0; extra == "dev"
23
24
  Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
  [project]
6
6
  name = "p1-taskqueue"
7
7
  # DO NOT CHANGE THIS VERSION - it gets automatically replaced by CI/CD with the git tag version
8
- version = "0.1.10"
8
+ version = "0.1.12"
9
9
  description = "A Task Queue Wrapper for Dekoruma Backend"
10
10
  authors = [
11
11
  {name = "Chalvin", email = "engineering@dekoruma.com"}
@@ -20,11 +20,12 @@ classifiers = [
20
20
  "Programming Language :: Python :: 3.12",
21
21
  ]
22
22
  dependencies = [
23
- "celery>=5.4.0",
24
- "flower>=2.0.1",
25
- "redis>=6.2.0",
26
- "kombu>=5.3.4",
23
+ "celery>=5.5.3",
24
+ "redis>=6.4.0",
25
+ "kombu>=5.5.4",
27
26
  "django>=4.0.0",
27
+ "django-celery-results>=2.6.0",
28
+ "django-celery-beat>=2.8.1",
28
29
  ]
29
30
 
30
31
  [project.optional-dependencies]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: p1-taskqueue
3
- Version: 0.1.10
3
+ Version: 0.1.12
4
4
  Summary: A Task Queue Wrapper for Dekoruma Backend
5
5
  Author-email: Chalvin <engineering@dekoruma.com>
6
6
  Project-URL: Homepage, https://github.com/Dekoruma/p1-taskqueue
@@ -13,11 +13,12 @@ Classifier: Programming Language :: Python :: 3.11
13
13
  Classifier: Programming Language :: Python :: 3.12
14
14
  Requires-Python: >=3.11
15
15
  Description-Content-Type: text/markdown
16
- Requires-Dist: celery>=5.4.0
17
- Requires-Dist: flower>=2.0.1
18
- Requires-Dist: redis>=6.2.0
19
- Requires-Dist: kombu>=5.3.4
16
+ Requires-Dist: celery>=5.5.3
17
+ Requires-Dist: redis>=6.4.0
18
+ Requires-Dist: kombu>=5.5.4
20
19
  Requires-Dist: django>=4.0.0
20
+ Requires-Dist: django-celery-results>=2.6.0
21
+ Requires-Dist: django-celery-beat>=2.8.1
21
22
  Provides-Extra: dev
22
23
  Requires-Dist: pytest>=7.0.0; extra == "dev"
23
24
  Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
@@ -1,8 +1,9 @@
1
- celery>=5.4.0
2
- flower>=2.0.1
3
- redis>=6.2.0
4
- kombu>=5.3.4
1
+ celery>=5.5.3
2
+ redis>=6.4.0
3
+ kombu>=5.5.4
5
4
  django>=4.0.0
5
+ django-celery-results>=2.6.0
6
+ django-celery-beat>=2.8.1
6
7
 
7
8
  [dev]
8
9
  pytest>=7.0.0
@@ -33,6 +33,8 @@ def create_celery_app():
33
33
  'timezone': getattr(settings, 'CELERY_TIMEZONE', 'UTC+7'),
34
34
  'task_time_limit': getattr(settings, 'CELERY_TASK_TIME_LIMIT', 30 * 60),
35
35
  'task_soft_time_limit': getattr(settings, 'CELERY_TASK_SOFT_TIME_LIMIT', 25 * 60),
36
+ # 14 days
37
+ 'result_expires': getattr(settings, 'CELERY_RESULT_EXPIRES', 14 * 24 * 60 * 60),
36
38
  'task_track_started': True,
37
39
  'task_always_eager': False,
38
40
  'task_eager_propagates': True,
@@ -8,7 +8,6 @@ from typing import Dict
8
8
  from typing import Tuple
9
9
 
10
10
  from celery import shared_task
11
- from celery.exceptions import Reject
12
11
 
13
12
  # Setup logger
14
13
  logger = logging.getLogger(__name__)
@@ -31,12 +30,12 @@ def _is_class_method(func: Any) -> bool:
31
30
  def taskqueue_class(cls):
32
31
  """Decorator to automatically capture init arguments for taskqueue."""
33
32
  original_init = cls.__init__
34
-
33
+
35
34
  def wrapped_init(self, *args, **kwargs):
36
35
  self._taskqueue_init_args = list(args)
37
36
  self._taskqueue_init_kwargs = dict(kwargs)
38
37
  original_init(self, *args, **kwargs)
39
-
38
+
40
39
  cls.__init__ = wrapped_init
41
40
  return cls
42
41
 
@@ -82,9 +81,9 @@ def _build_dynamic_task_call(func: Any, *args: Any, **func_kwargs: Any) -> Tuple
82
81
  module_path = klass.__module__
83
82
  class_name = klass.__name__
84
83
  method_name = func.__name__
85
-
84
+
86
85
  init_args, init_kwargs = _extract_init_args_from_instance(instance)
87
-
86
+
88
87
  task_name = "taskqueue.cmanager.dynamic_class_method_executor"
89
88
  task_args = []
90
89
  task_kwargs: Dict[str, Any] = {
@@ -238,7 +237,6 @@ class CManager:
238
237
  cm = CManager()
239
238
 
240
239
 
241
- # Dynamic task executors - handle function and class method execution
242
240
  @shared_task(bind=True, max_retries=K_MAX_RETRY_COUNT)
243
241
  def dynamic_function_executor(self, module_path=None, function_name=None, args=None, kwargs=None, retry=None):
244
242
  job_id = self.request.id
@@ -262,7 +260,9 @@ def dynamic_function_executor(self, module_path=None, function_name=None, args=N
262
260
  max_retries = retry['max_retries']
263
261
 
264
262
  if current_retries >= max_retries:
265
- raise Reject(str(e), requeue=False)
263
+ logger.error(
264
+ f"[TaskQueue] Max retries ({max_retries}) reached for function: {function_name}, marking task as FAILED, job_id: {job_id}")
265
+ raise
266
266
 
267
267
  countdown = K_DEFAULT_RETRY_COUNTDOWN
268
268
  if isinstance(retry, dict) and 'countdown' in retry:
@@ -298,7 +298,9 @@ def dynamic_class_method_executor(self, module_path=None, class_name=None, metho
298
298
  max_retries = retry['max_retries']
299
299
 
300
300
  if current_retries >= max_retries:
301
- raise Reject(str(e), requeue=False)
301
+ logger.error(
302
+ f"[TaskQueue] Max retries ({max_retries}) reached for method: {method_name}, marking task as FAILED, job_id: {job_id}")
303
+ raise
302
304
 
303
305
  countdown = K_DEFAULT_RETRY_COUNTDOWN
304
306
  if isinstance(retry, dict) and 'countdown' in retry:
File without changes
File without changes