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.
- {serverish-1.4.0 → serverish-1.4.2}/PKG-INFO +1 -1
- {serverish-1.4.0 → serverish-1.4.2}/pyproject.toml +1 -1
- {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msg_reader.py +20 -1
- {serverish-1.4.0 → serverish-1.4.2}/LICENSE +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/README.md +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/__init__.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/base/__init__.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/base/asyncio_util_functions.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/base/collector.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/base/datetime.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/base/exceptions.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/base/fifoset.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/base/hasstatuses.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/base/idmanger.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/base/iterators.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/base/manageable.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/base/singleton.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/base/status.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/base/task_manager.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/connection/__init__.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/connection/connection.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/connection/connection_jets.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/connection/connection_nats.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/__init__.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/logging.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/messenger.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msg_callback_sub.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msg_journal_pub.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msg_journal_read.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msg_progress_pub.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msg_progress_read.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msg_publisher.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msg_rpc_req.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msg_rpc_resp.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msg_single_pub.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msg_single_read.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/messenger/msgvalidator.py +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/schema/config.schema.json +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/schema/default.schema.json +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/schema/include/timestamp.schema.json +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/schema/journal.schema.json +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/schema/meta.schema.json +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/schema/program_current_state.schema.json +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/schema/program_state.schema.json +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/schema/progress.schema.json +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/schema/telemetry.schema.json +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/services/TODO.txt +0 -0
- {serverish-1.4.0 → serverish-1.4.2}/serverish/slog.py +0 -0
|
@@ -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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|