serverish 1.4.0__tar.gz → 1.4.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 (48) hide show
  1. {serverish-1.4.0 → serverish-1.4.2}/PKG-INFO +1 -1
  2. {serverish-1.4.0 → serverish-1.4.2}/pyproject.toml +1 -1
  3. {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msg_reader.py +20 -1
  4. {serverish-1.4.0 → serverish-1.4.2}/LICENSE +0 -0
  5. {serverish-1.4.0 → serverish-1.4.2}/README.md +0 -0
  6. {serverish-1.4.0 → serverish-1.4.2}/serverish/__init__.py +0 -0
  7. {serverish-1.4.0 → serverish-1.4.2}/serverish/base/__init__.py +0 -0
  8. {serverish-1.4.0 → serverish-1.4.2}/serverish/base/asyncio_util_functions.py +0 -0
  9. {serverish-1.4.0 → serverish-1.4.2}/serverish/base/collector.py +0 -0
  10. {serverish-1.4.0 → serverish-1.4.2}/serverish/base/datetime.py +0 -0
  11. {serverish-1.4.0 → serverish-1.4.2}/serverish/base/exceptions.py +0 -0
  12. {serverish-1.4.0 → serverish-1.4.2}/serverish/base/fifoset.py +0 -0
  13. {serverish-1.4.0 → serverish-1.4.2}/serverish/base/hasstatuses.py +0 -0
  14. {serverish-1.4.0 → serverish-1.4.2}/serverish/base/idmanger.py +0 -0
  15. {serverish-1.4.0 → serverish-1.4.2}/serverish/base/iterators.py +0 -0
  16. {serverish-1.4.0 → serverish-1.4.2}/serverish/base/manageable.py +0 -0
  17. {serverish-1.4.0 → serverish-1.4.2}/serverish/base/singleton.py +0 -0
  18. {serverish-1.4.0 → serverish-1.4.2}/serverish/base/status.py +0 -0
  19. {serverish-1.4.0 → serverish-1.4.2}/serverish/base/task_manager.py +0 -0
  20. {serverish-1.4.0 → serverish-1.4.2}/serverish/connection/__init__.py +0 -0
  21. {serverish-1.4.0 → serverish-1.4.2}/serverish/connection/connection.py +0 -0
  22. {serverish-1.4.0 → serverish-1.4.2}/serverish/connection/connection_jets.py +0 -0
  23. {serverish-1.4.0 → serverish-1.4.2}/serverish/connection/connection_nats.py +0 -0
  24. {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/__init__.py +0 -0
  25. {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/logging.py +0 -0
  26. {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/messenger.py +0 -0
  27. {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msg_callback_sub.py +0 -0
  28. {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msg_journal_pub.py +0 -0
  29. {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msg_journal_read.py +0 -0
  30. {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msg_progress_pub.py +0 -0
  31. {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msg_progress_read.py +0 -0
  32. {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msg_publisher.py +0 -0
  33. {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msg_rpc_req.py +0 -0
  34. {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msg_rpc_resp.py +0 -0
  35. {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msg_single_pub.py +0 -0
  36. {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msg_single_read.py +0 -0
  37. {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msgvalidator.py +0 -0
  38. {serverish-1.4.0 → serverish-1.4.2}/serverish/schema/config.schema.json +0 -0
  39. {serverish-1.4.0 → serverish-1.4.2}/serverish/schema/default.schema.json +0 -0
  40. {serverish-1.4.0 → serverish-1.4.2}/serverish/schema/include/timestamp.schema.json +0 -0
  41. {serverish-1.4.0 → serverish-1.4.2}/serverish/schema/journal.schema.json +0 -0
  42. {serverish-1.4.0 → serverish-1.4.2}/serverish/schema/meta.schema.json +0 -0
  43. {serverish-1.4.0 → serverish-1.4.2}/serverish/schema/program_current_state.schema.json +0 -0
  44. {serverish-1.4.0 → serverish-1.4.2}/serverish/schema/program_state.schema.json +0 -0
  45. {serverish-1.4.0 → serverish-1.4.2}/serverish/schema/progress.schema.json +0 -0
  46. {serverish-1.4.0 → serverish-1.4.2}/serverish/schema/telemetry.schema.json +0 -0
  47. {serverish-1.4.0 → serverish-1.4.2}/serverish/services/TODO.txt +0 -0
  48. {serverish-1.4.0 → serverish-1.4.2}/serverish/slog.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: serverish
3
- Version: 1.4.0
3
+ Version: 1.4.2
4
4
  Summary: helpers for server alike projects
5
5
  Home-page: https://github.com/AkondLab/serverish
6
6
  Author: Mikołaj Kałuszyński
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "serverish"
3
- version = "1.4.0"
3
+ version = "1.4.2"
4
4
  description = "helpers for server alike projects"
5
5
  authors = ["Mikołaj Kałuszyński", "MMME team"]
6
6
  readme = "README.md"
@@ -33,6 +33,17 @@ class MsgReader(MsgDriver):
33
33
 
34
34
  Use this class if you want to read data from a messenger subject.
35
35
  Check for specialist readers for common use cases.
36
+
37
+ Args:
38
+ subject (str): subject to subscribe to
39
+ parent (Messenger): Messenger instance to use, if None, will use default Messenger()
40
+ deliver_policy (str): deliver policy, one of 'all', 'last', 'new', 'by_start_sequence', 'by_start_time', 'last_per_subject'
41
+ opt_start_time (datetime): start time for 'by_start_time' deliver policy
42
+ consumer_cfg (dict): additional consumer configuration, see nats.js.api.ConsumerConfig
43
+ nowait (bool): if True, read_next will return immediately if no messages are available and will finish iteration
44
+ error_behavior (str): on serious error (e.g. disconnection), one of 'RAISE', 'FINISH', 'WAIT'
45
+ on_missed_messages (str): on missed messages (e.g. during broken connection), one of 'SKIP', 'REPLAY'
46
+
36
47
  """
37
48
 
38
49
  deliver_policy: str = param.ObjectSelector(default='all',
@@ -57,11 +68,15 @@ class MsgReader(MsgDriver):
57
68
  doc="On missed message (e.g. during broken connection): "
58
69
  "SKIP - skip delayed messages"
59
70
  "REPLAY - read and replay")
71
+ nowait = param.Boolean(default=False,
72
+ doc="If True, read_next will return immediately if no messages are available and will "
73
+ "finish iteration")
60
74
 
61
75
  def __init__(self, subject, parent = None,
62
76
  deliver_policy = 'all',
63
77
  opt_start_time = None,
64
78
  consumer_cfg=None,
79
+ nowait: bool = False,
65
80
  **kwargs) -> None:
66
81
  if parent is None:
67
82
  parent = Messenger()
@@ -151,7 +166,7 @@ class MsgReader(MsgDriver):
151
166
  async def pop_msg(self) -> None:
152
167
  if len(self.reader.messages) > 0:
153
168
  bmsg = self.reader.messages.popleft()
154
- try: # nonessential
169
+ try: # nonessential #TODO: implement delayed acking / no acking as na option
155
170
  await bmsg.ack()
156
171
  except Exception as e:
157
172
  log.warning(self.fmt(f"Error acking message: {e}"))
@@ -239,6 +254,10 @@ class MsgReader(MsgDriver):
239
254
  # If no messages were available immediately, switch to blocking mode
240
255
  # to wait for at least one message more efficiently
241
256
  if len(new_msgs) == 0:
257
+ if self.reader.nowait:
258
+ log.debug(self.fmt(f"No new messages found, finishing due to nowait"))
259
+ raise self.EndIterationException('nowait')
260
+
242
261
  log.debug(self.fmt(f"No messages available immediately, waiting for at least one message with timeout {timeout:0.1f}s"))
243
262
 
244
263
  # Use the regular fetch operation from nats (which blocks)
File without changes
File without changes
File without changes