fastprocesses 0.20.0__tar.gz → 0.20.2__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 (30) hide show
  1. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/PKG-INFO +13 -6
  2. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/README.md +11 -3
  3. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/pyproject.toml +1 -1
  4. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/common.py +6 -0
  5. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/core/base_process.py +11 -5
  6. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/AUTHORS.md +0 -0
  7. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/__init__.py +0 -0
  8. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/api/__init__.py +0 -0
  9. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/api/manager.py +0 -0
  10. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/api/router.py +0 -0
  11. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/api/server.py +0 -0
  12. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/core/__init__.py +0 -0
  13. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/core/cache.py +0 -0
  14. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/core/config.py +0 -0
  15. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/core/exceptions.py +0 -0
  16. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/core/logging.py +0 -0
  17. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/core/models.py +0 -0
  18. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/core/redis_connection.py +0 -0
  19. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/core/types.py +0 -0
  20. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/processes/__init__.py +0 -0
  21. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/processes/process_registry.py +0 -0
  22. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/py.typed +0 -0
  23. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/static/style.css +0 -0
  24. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/templates/landing.html +0 -0
  25. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/worker/__init__.py +0 -0
  26. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/worker/celery_app.py +0 -0
  27. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/worker/chord_tasks.py +0 -0
  28. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/worker/executors.py +0 -0
  29. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/worker/job_status.py +0 -0
  30. {fastprocesses-0.20.0 → fastprocesses-0.20.2}/src/fastprocesses/worker/pipeline.py +0 -0
@@ -1,8 +1,7 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.3
2
2
  Name: fastprocesses
3
- Version: 0.20.0
3
+ Version: 0.20.2
4
4
  Summary: A library to create a FastAPI-based OGC API Processes wrapper around existing projects.
5
- License-File: AUTHORS.md
6
5
  Author: Stefan Schuhart
7
6
  Author-email: stefan.schuhart@gv.hamburg.de
8
7
  Requires-Python: >=3.12
@@ -39,7 +38,7 @@ A library to create a FastAPI-based OGC API Processes wrapper around existing pr
39
38
 
40
39
  AI helped to create this code.
41
40
 
42
- ## Version: 0.20.0
41
+ ## Version: 0.20.2
43
42
 
44
43
  ### Description
45
44
 
@@ -523,8 +522,16 @@ RESULTS_TEMP_TTL_HOURS=48 # this period determines how long results can be retri
523
522
  !IMPORTANT!: Cache hash key is based on original unprocessed inputs always. This ensures consistent caching and cache retrieval which does not depend on arbitrary processed data, which can change when the process is updated or changed!
524
523
 
525
524
  ### Version Notes
526
- - **0.16.0**: Added `BaseParallelProcess` (data fan-out) and `BaseScatterProcess` + `@parallel_step` (operation fan-out); both use Celery chords for non-blocking, KEDA-compatible parallel execution
527
- - **0.15.0**: Implemented redis retry mechanism
525
+
526
+ See [CHANGELOG.md](CHANGELOG.md) for the full history.
527
+
528
+ - **0.20.0**: Internal refactor of `celery_app` into modular components; no public API changes
529
+ - **0.19.0**: `resolve_remote_inputs` hook; `DataFetchError` exception; queue isolation for multi-instance deployments (`celery_queue` setting); process-specific validation hook (`validate_inputs`)
530
+ - **0.18.0**: Generic Helm chart; automated job status counter; `merge_results` receives `exec_body`; large request body handling
531
+ - **0.17.0**: Graceful handling of inaccessible remote JSON schemas
532
+ - **0.16.0**: `BaseParallelProcess` (data fan-out) and `BaseScatterProcess` + `@parallel_step` (operation fan-out); KEDA-compatible Celery chord execution
533
+ - **0.15.0**: Redis retry mechanism
534
+ - **0.14.0**: Renamed settings (`FP_` prefix); HTML landing page with content negotiation
528
535
  - **0.14.0**: Renamed settings and allowed to add metadata to server app, added a html landing page
529
536
  - **0.13.0**: Validation occurs against schema fragment provided by process description
530
537
  - **0.12.0**: results will be retrieved from cache only if inputs and outputs are the same
@@ -4,7 +4,7 @@ A library to create a FastAPI-based OGC API Processes wrapper around existing pr
4
4
 
5
5
  AI helped to create this code.
6
6
 
7
- ## Version: 0.20.0
7
+ ## Version: 0.20.2
8
8
 
9
9
  ### Description
10
10
 
@@ -488,8 +488,16 @@ RESULTS_TEMP_TTL_HOURS=48 # this period determines how long results can be retri
488
488
  !IMPORTANT!: Cache hash key is based on original unprocessed inputs always. This ensures consistent caching and cache retrieval which does not depend on arbitrary processed data, which can change when the process is updated or changed!
489
489
 
490
490
  ### Version Notes
491
- - **0.16.0**: Added `BaseParallelProcess` (data fan-out) and `BaseScatterProcess` + `@parallel_step` (operation fan-out); both use Celery chords for non-blocking, KEDA-compatible parallel execution
492
- - **0.15.0**: Implemented redis retry mechanism
491
+
492
+ See [CHANGELOG.md](CHANGELOG.md) for the full history.
493
+
494
+ - **0.20.0**: Internal refactor of `celery_app` into modular components; no public API changes
495
+ - **0.19.0**: `resolve_remote_inputs` hook; `DataFetchError` exception; queue isolation for multi-instance deployments (`celery_queue` setting); process-specific validation hook (`validate_inputs`)
496
+ - **0.18.0**: Generic Helm chart; automated job status counter; `merge_results` receives `exec_body`; large request body handling
497
+ - **0.17.0**: Graceful handling of inaccessible remote JSON schemas
498
+ - **0.16.0**: `BaseParallelProcess` (data fan-out) and `BaseScatterProcess` + `@parallel_step` (operation fan-out); KEDA-compatible Celery chord execution
499
+ - **0.15.0**: Redis retry mechanism
500
+ - **0.14.0**: Renamed settings (`FP_` prefix); HTML landing page with content negotiation
493
501
  - **0.14.0**: Renamed settings and allowed to add metadata to server app, added a html landing page
494
502
  - **0.13.0**: Validation occurs against schema fragment provided by process description
495
503
  - **0.12.0**: results will be retrieved from cache only if inputs and outputs are the same
@@ -79,7 +79,7 @@ exclude = [
79
79
 
80
80
  [tool.poetry]
81
81
  name = "fastprocesses"
82
- version = "0.20.0"
82
+ version = "0.20.2"
83
83
  description = "A library to create a FastAPI-based OGC API Processes wrapper around existing projects."
84
84
  authors = ["Stefan Schuhart <stefan.schuhart@gv.hamburg.de>"]
85
85
  readme = "README.md"
@@ -102,6 +102,12 @@ celery_app.conf.update(
102
102
  "retry_on_timeout": True,
103
103
  "retry_on_connection_failure": True,
104
104
  },
105
+ # Re-queue the task immediately when the worker process dies (OOM kill, pod
106
+ # eviction, etc.) instead of waiting for visibility_timeout to expire.
107
+ # Without this, KEDA sees queue depth=0 (task is in unacked, not in queue)
108
+ # and never spawns a replacement worker — the task is orphaned until
109
+ # visibility_timeout (currently >30 min) elapses.
110
+ task_reject_on_worker_lost=True,
105
111
  )
106
112
 
107
113
  for key, value in celery_app.conf.items():
@@ -267,11 +267,17 @@ class BaseProcess(ABC):
267
267
  input_schema = input_desc.scheme.model_dump(
268
268
  exclude_unset=True, by_alias=True
269
269
  )
270
- jsonschema_validate(
271
- instance=input_value,
272
- schema=input_schema,
273
- registry=self.schema_registry,
274
- )
270
+ if self.schema_registry is not None:
271
+ jsonschema_validate(
272
+ instance=input_value,
273
+ schema=input_schema,
274
+ registry=self.schema_registry,
275
+ )
276
+ else:
277
+ jsonschema_validate(
278
+ instance=input_value,
279
+ schema=input_schema,
280
+ )
275
281
  except JSONSchemaValidationError as e:
276
282
  # For oneOf/anyOf/allOf, best_match picks the deepest,
277
283
  # most specific sub-error instead of the generic top-level one.