sovereign 1.0.0b123__tar.gz → 1.0.0b123.post2__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.

Potentially problematic release.


This version of sovereign might be problematic. Click here for more details.

Files changed (66) hide show
  1. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/PKG-INFO +1 -1
  2. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/pyproject.toml +1 -1
  3. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/worker.py +20 -2
  4. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/LICENSE.txt +0 -0
  5. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/README.md +0 -0
  6. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/__init__.py +0 -0
  7. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/app.py +0 -0
  8. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/cache.py +0 -0
  9. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/constants.py +0 -0
  10. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/context.py +0 -0
  11. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/dynamic_config/__init__.py +0 -0
  12. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/dynamic_config/deser.py +0 -0
  13. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/dynamic_config/loaders.py +0 -0
  14. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/error_info.py +0 -0
  15. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/logging/access_logger.py +0 -0
  16. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/logging/application_logger.py +0 -0
  17. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/logging/base_logger.py +0 -0
  18. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/logging/bootstrapper.py +0 -0
  19. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/logging/types.py +0 -0
  20. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/middlewares.py +0 -0
  21. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/modifiers/__init__.py +0 -0
  22. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/modifiers/lib.py +0 -0
  23. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/rendering.py +0 -0
  24. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/response_class.py +0 -0
  25. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/schemas.py +0 -0
  26. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/server.py +0 -0
  27. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/sources/__init__.py +0 -0
  28. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/sources/file.py +0 -0
  29. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/sources/inline.py +0 -0
  30. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/sources/lib.py +0 -0
  31. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/sources/poller.py +0 -0
  32. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/static/node_expression.js +0 -0
  33. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/static/panel.js +0 -0
  34. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/static/sass/style.scss +0 -0
  35. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/static/style.css +0 -0
  36. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/statistics.py +0 -0
  37. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/templates/base.html +0 -0
  38. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/templates/err.html +0 -0
  39. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/templates/resources.html +0 -0
  40. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/testing/loaders.py +0 -0
  41. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/testing/modifiers.py +0 -0
  42. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/tracing.py +0 -0
  43. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/utils/__init__.py +0 -0
  44. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/utils/auth.py +0 -0
  45. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/utils/crypto/__init__.py +0 -0
  46. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/utils/crypto/crypto.py +0 -0
  47. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/utils/crypto/suites/__init__.py +0 -0
  48. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/utils/crypto/suites/aes_gcm_cipher.py +0 -0
  49. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/utils/crypto/suites/base_cipher.py +0 -0
  50. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/utils/crypto/suites/disabled_cipher.py +0 -0
  51. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/utils/crypto/suites/fernet_cipher.py +0 -0
  52. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/utils/dictupdate.py +0 -0
  53. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/utils/eds.py +0 -0
  54. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/utils/entry_point_loader.py +0 -0
  55. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/utils/mock.py +0 -0
  56. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/utils/resources.py +0 -0
  57. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/utils/templates.py +0 -0
  58. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/utils/timer.py +0 -0
  59. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/utils/version_info.py +0 -0
  60. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/utils/weighted_clusters.py +0 -0
  61. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/views/__init__.py +0 -0
  62. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/views/api.py +0 -0
  63. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/views/crypto.py +0 -0
  64. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/views/discovery.py +0 -0
  65. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/views/healthchecks.py +0 -0
  66. {sovereign-1.0.0b123 → sovereign-1.0.0b123.post2}/src/sovereign/views/interface.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sovereign
3
- Version: 1.0.0b123
3
+ Version: 1.0.0b123.post2
4
4
  Summary: Envoy Proxy control-plane written in Python
5
5
  Home-page: https://pypi.org/project/sovereign/
6
6
  License: Apache-2.0
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "sovereign"
3
- version = "1.0.0b123"
3
+ version = "1.0.0b123-2"
4
4
  description = "Envoy Proxy control-plane written in Python"
5
5
  license = "Apache-2.0"
6
6
  packages = [
@@ -1,4 +1,5 @@
1
1
  import asyncio
2
+ import os
2
3
  from typing import Optional
3
4
  from multiprocessing import Process, cpu_count
4
5
  from contextlib import asynccontextmanager
@@ -60,9 +61,26 @@ if config.sources is not None:
60
61
  context_middleware.append(poller.add_to_context)
61
62
 
62
63
 
64
+ def _render_process_entry(job: rendering.RenderJob): # runs in child
65
+ """Entry point for render subprocess; increase niceness so it is lower priority.
66
+
67
+ We deliberately raise the niceness (positive value) so these CPU bound template
68
+ renders cannot starve the worker's main event loop handling incoming requests.
69
+ """
70
+ try:
71
+ try:
72
+ # Always lower scheduling priority by adding +2 niceness relative to parent
73
+ os.nice(2) # best-effort; ignored if insufficient privileges
74
+ except Exception:
75
+ pass
76
+ rendering.generate(job)
77
+ except Exception:
78
+ log.exception("Render process failed for %s", job.id)
79
+
80
+
63
81
  def render(job: rendering.RenderJob):
64
- log.debug(f"Spawning render process for {job.id}")
65
- process = Process(target=rendering.generate, args=[job])
82
+ log.debug(f"Spawning render process for {job.id} with lowered priority")
83
+ process = Process(target=_render_process_entry, args=(job,), daemon=True)
66
84
  process.start()
67
85
  return process
68
86