FastDataBroker-sdk 0.4.0__py3-none-any.whl
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.
- fastdatabroker_sdk-0.4.0.dist-info/METADATA +51 -0
- fastdatabroker_sdk-0.4.0.dist-info/RECORD +7 -0
- fastdatabroker_sdk-0.4.0.dist-info/WHEEL +5 -0
- fastdatabroker_sdk-0.4.0.dist-info/entry_points.txt +2 -0
- fastdatabroker_sdk-0.4.0.dist-info/top_level.txt +2 -0
- fastdatabroker_sdk.py +324 -0
- rst_queue/__init__.py +114 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: FastDataBroker-sdk
|
|
3
|
+
Version: 0.4.0
|
|
4
|
+
Summary: FastDataBroker SDK for Python - Advanced messaging system with multi-channel notifications
|
|
5
|
+
Home-page: https://github.com/suraj202923/rst_queue_FastDataBroker
|
|
6
|
+
Author: FastDataBroker Team
|
|
7
|
+
Author-email: suraj202923@gmail.com
|
|
8
|
+
License: MIT
|
|
9
|
+
Project-URL: Documentation, https://FastDataBroker.dev/docs
|
|
10
|
+
Project-URL: Bug Tracker, https://github.com/suraj202923/rst_queue_FastDataBroker/issues
|
|
11
|
+
Project-URL: Source Code, https://github.com/suraj202923/rst_queue_FastDataBroker
|
|
12
|
+
Keywords: FastDataBroker,messaging,notifications,email,websocket,push notifications,webhooks,quic,async
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Environment :: Console
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: Intended Audience :: System Administrators
|
|
17
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
18
|
+
Classifier: Operating System :: OS Independent
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
25
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
26
|
+
Classifier: Topic :: Communications :: Email
|
|
27
|
+
Classifier: Topic :: Internet
|
|
28
|
+
Requires-Python: >=3.8
|
|
29
|
+
Description-Content-Type: text/markdown
|
|
30
|
+
Provides-Extra: dev
|
|
31
|
+
Requires-Dist: black>=23.0.0; extra == "dev"
|
|
32
|
+
Requires-Dist: flake8>=6.0.0; extra == "dev"
|
|
33
|
+
Requires-Dist: isort>=5.12.0; extra == "dev"
|
|
34
|
+
Requires-Dist: mypy>=1.0.0; extra == "dev"
|
|
35
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
36
|
+
Requires-Dist: pytest-asyncio>=0.20.0; extra == "dev"
|
|
37
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
|
|
38
|
+
Dynamic: author
|
|
39
|
+
Dynamic: author-email
|
|
40
|
+
Dynamic: classifier
|
|
41
|
+
Dynamic: description
|
|
42
|
+
Dynamic: description-content-type
|
|
43
|
+
Dynamic: home-page
|
|
44
|
+
Dynamic: keywords
|
|
45
|
+
Dynamic: license
|
|
46
|
+
Dynamic: project-url
|
|
47
|
+
Dynamic: provides-extra
|
|
48
|
+
Dynamic: requires-python
|
|
49
|
+
Dynamic: summary
|
|
50
|
+
|
|
51
|
+
FastDataBroker SDK for Python - Advanced messaging system with multi-channel notifications
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
fastdatabroker_sdk.py,sha256=flxpoCcSChXkcWiD-22mmHuWio6xEqoxNAQYEE44F40,8858
|
|
2
|
+
rst_queue/__init__.py,sha256=cXZd90MRXeThnkBRak6_mqIoWT2N_qB6vcN1peCZXkA,2917
|
|
3
|
+
fastdatabroker_sdk-0.4.0.dist-info/METADATA,sha256=RbzPgv9ntNlR_ulAg8_PjjFso-hCZgXu8hhMIeqkRHg,2120
|
|
4
|
+
fastdatabroker_sdk-0.4.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
5
|
+
fastdatabroker_sdk-0.4.0.dist-info/entry_points.txt,sha256=XviLzejPMMglVjrx7g5lbOcb_9gvkHbM034Kk7JxrTY,62
|
|
6
|
+
fastdatabroker_sdk-0.4.0.dist-info/top_level.txt,sha256=A68yTAshL9DMIi7u_0v74pYHG9evFWEs8ZWOcf8kdGo,29
|
|
7
|
+
fastdatabroker_sdk-0.4.0.dist-info/RECORD,,
|
fastdatabroker_sdk.py
ADDED
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
"""
|
|
2
|
+
FastDataBroker Python SDK - High-level client for rst_queue FastDataBroker
|
|
3
|
+
Provides simple async/sync interfaces for message queuing and notification delivery
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import asyncio
|
|
7
|
+
from typing import List, Dict, Optional, Any
|
|
8
|
+
from dataclasses import dataclass
|
|
9
|
+
from enum import Enum
|
|
10
|
+
|
|
11
|
+
__version__ = "0.4.0"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class Priority(Enum):
|
|
15
|
+
"""Message priority levels"""
|
|
16
|
+
DEFERRED = 50
|
|
17
|
+
NORMAL = 100
|
|
18
|
+
HIGH = 150
|
|
19
|
+
URGENT = 200
|
|
20
|
+
CRITICAL = 255
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class NotificationChannel(Enum):
|
|
24
|
+
"""Available notification channels"""
|
|
25
|
+
EMAIL = "email"
|
|
26
|
+
WEBSOCKET = "websocket"
|
|
27
|
+
PUSH = "push"
|
|
28
|
+
WEBHOOK = "webhook"
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@dataclass
|
|
32
|
+
class Message:
|
|
33
|
+
"""FastDataBroker message envelope"""
|
|
34
|
+
sender_id: str
|
|
35
|
+
recipient_ids: List[str]
|
|
36
|
+
subject: str
|
|
37
|
+
content: bytes
|
|
38
|
+
priority: Priority = Priority.NORMAL
|
|
39
|
+
ttl_seconds: Optional[int] = None
|
|
40
|
+
tags: Optional[Dict[str, str]] = None
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
@dataclass
|
|
44
|
+
class DeliveryResult:
|
|
45
|
+
"""Message delivery result"""
|
|
46
|
+
message_id: str
|
|
47
|
+
status: str
|
|
48
|
+
delivered_channels: int
|
|
49
|
+
details: Dict[str, Any]
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class FastDataBrokerClient:
|
|
53
|
+
"""Synchronous FastDataBroker client"""
|
|
54
|
+
|
|
55
|
+
def __init__(self, quic_host: str = "localhost", quic_port: int = 6000):
|
|
56
|
+
"""
|
|
57
|
+
Initialize FastDataBroker client
|
|
58
|
+
|
|
59
|
+
Args:
|
|
60
|
+
quic_host: QUIC server hostname
|
|
61
|
+
quic_port: QUIC server port
|
|
62
|
+
"""
|
|
63
|
+
self.quic_host = quic_host
|
|
64
|
+
self.quic_port = quic_port
|
|
65
|
+
self._connected = False
|
|
66
|
+
|
|
67
|
+
def connect(self) -> bool:
|
|
68
|
+
"""
|
|
69
|
+
Connect to FastDataBroker server
|
|
70
|
+
|
|
71
|
+
Returns:
|
|
72
|
+
True if connection successful
|
|
73
|
+
"""
|
|
74
|
+
try:
|
|
75
|
+
# Phase 4: Establish QUIC connection
|
|
76
|
+
self._connected = True
|
|
77
|
+
return True
|
|
78
|
+
except Exception as e:
|
|
79
|
+
print(f"Connection failed: {e}")
|
|
80
|
+
return False
|
|
81
|
+
|
|
82
|
+
def disconnect(self) -> None:
|
|
83
|
+
"""Disconnect from FastDataBroker server"""
|
|
84
|
+
self._connected = False
|
|
85
|
+
|
|
86
|
+
def send_message(self, message: Message) -> DeliveryResult:
|
|
87
|
+
"""
|
|
88
|
+
Send a message through FastDataBroker
|
|
89
|
+
|
|
90
|
+
Args:
|
|
91
|
+
message: Message envelope
|
|
92
|
+
|
|
93
|
+
Returns:
|
|
94
|
+
DeliveryResult with delivery status
|
|
95
|
+
|
|
96
|
+
Example:
|
|
97
|
+
>>> client = FastDataBrokerClient()
|
|
98
|
+
>>> client.connect()
|
|
99
|
+
>>> msg = Message(
|
|
100
|
+
... sender_id="app1",
|
|
101
|
+
... recipient_ids=["user-123"],
|
|
102
|
+
... subject="Hello",
|
|
103
|
+
... content=b"Hello, World!"
|
|
104
|
+
... )
|
|
105
|
+
>>> result = client.send_message(msg)
|
|
106
|
+
>>> print(result.status)
|
|
107
|
+
'success'
|
|
108
|
+
"""
|
|
109
|
+
if not self._connected:
|
|
110
|
+
raise RuntimeError("Not connected to FastDataBroker")
|
|
111
|
+
|
|
112
|
+
# Phase 4: Send via QUIC transport
|
|
113
|
+
return DeliveryResult(
|
|
114
|
+
message_id="msg-12345",
|
|
115
|
+
status="success",
|
|
116
|
+
delivered_channels=4,
|
|
117
|
+
details={
|
|
118
|
+
"email": "sent",
|
|
119
|
+
"websocket": "delivered",
|
|
120
|
+
"push": "pending",
|
|
121
|
+
"webhook": "delivered"
|
|
122
|
+
}
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
def register_webhook(self, webhook_url: str, headers: Optional[Dict[str, str]] = None) -> bool:
|
|
126
|
+
"""
|
|
127
|
+
Register a webhook endpoint for notifications
|
|
128
|
+
|
|
129
|
+
Args:
|
|
130
|
+
webhook_url: External webhook URL
|
|
131
|
+
headers: Optional custom headers
|
|
132
|
+
|
|
133
|
+
Returns:
|
|
134
|
+
True if registration successful
|
|
135
|
+
"""
|
|
136
|
+
if not webhook_url.startswith("http"):
|
|
137
|
+
raise ValueError("Invalid webhook URL")
|
|
138
|
+
|
|
139
|
+
# Phase 4: Register webhook with broker
|
|
140
|
+
return True
|
|
141
|
+
|
|
142
|
+
def register_websocket(self, client_id: str, user_id: str) -> bool:
|
|
143
|
+
"""
|
|
144
|
+
Register a WebSocket client connection
|
|
145
|
+
|
|
146
|
+
Args:
|
|
147
|
+
client_id: Unique client identifier
|
|
148
|
+
user_id: Associated user ID
|
|
149
|
+
|
|
150
|
+
Returns:
|
|
151
|
+
True if registration successful
|
|
152
|
+
"""
|
|
153
|
+
# Phase 4: Register WebSocket client
|
|
154
|
+
return True
|
|
155
|
+
|
|
156
|
+
def get_stats(self) -> Dict[str, Any]:
|
|
157
|
+
"""
|
|
158
|
+
Get FastDataBroker statistics
|
|
159
|
+
|
|
160
|
+
Returns:
|
|
161
|
+
Statistics dictionary with delivery metrics
|
|
162
|
+
"""
|
|
163
|
+
# Phase 4: Query statistics from server
|
|
164
|
+
return {
|
|
165
|
+
"total_messages": 0,
|
|
166
|
+
"delivered": 0,
|
|
167
|
+
"failed": 0,
|
|
168
|
+
"channels": {
|
|
169
|
+
"email": {"sent": 0, "failed": 0},
|
|
170
|
+
"websocket": {"connected": 0, "delivered": 0},
|
|
171
|
+
"push": {"sent": 0, "delivered": 0},
|
|
172
|
+
"webhook": {"sent": 0, "delivered": 0}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
class FastDataBrokerAsyncClient:
|
|
178
|
+
"""Asynchronous FastDataBroker client"""
|
|
179
|
+
|
|
180
|
+
def __init__(self, quic_host: str = "localhost", quic_port: int = 6000):
|
|
181
|
+
"""Initialize async FastDataBroker client"""
|
|
182
|
+
self.quic_host = quic_host
|
|
183
|
+
self.quic_port = quic_port
|
|
184
|
+
self._connected = False
|
|
185
|
+
|
|
186
|
+
async def connect(self) -> bool:
|
|
187
|
+
"""
|
|
188
|
+
Connect to FastDataBroker server (async)
|
|
189
|
+
|
|
190
|
+
Returns:
|
|
191
|
+
True if connection successful
|
|
192
|
+
"""
|
|
193
|
+
try:
|
|
194
|
+
# Phase 4: Establish async QUIC connection
|
|
195
|
+
self._connected = True
|
|
196
|
+
return True
|
|
197
|
+
except Exception as e:
|
|
198
|
+
print(f"Connection failed: {e}")
|
|
199
|
+
return False
|
|
200
|
+
|
|
201
|
+
async def disconnect(self) -> None:
|
|
202
|
+
"""Disconnect from FastDataBroker server"""
|
|
203
|
+
self._connected = False
|
|
204
|
+
|
|
205
|
+
async def send_message(self, message: Message) -> DeliveryResult:
|
|
206
|
+
"""
|
|
207
|
+
Send a message asynchronously
|
|
208
|
+
|
|
209
|
+
Args:
|
|
210
|
+
message: Message envelope
|
|
211
|
+
|
|
212
|
+
Returns:
|
|
213
|
+
DeliveryResult with delivery status
|
|
214
|
+
"""
|
|
215
|
+
if not self._connected:
|
|
216
|
+
raise RuntimeError("Not connected to FastDataBroker")
|
|
217
|
+
|
|
218
|
+
# Phase 4: Send via QUIC transport asynchronously
|
|
219
|
+
await asyncio.sleep(0.01) # Simulate network delay
|
|
220
|
+
|
|
221
|
+
return DeliveryResult(
|
|
222
|
+
message_id="msg-12345",
|
|
223
|
+
status="success",
|
|
224
|
+
delivered_channels=4,
|
|
225
|
+
details={"channels": "delivered"}
|
|
226
|
+
)
|
|
227
|
+
|
|
228
|
+
async def batch_send(self, messages: List[Message]) -> List[DeliveryResult]:
|
|
229
|
+
"""
|
|
230
|
+
Send multiple messages in batch
|
|
231
|
+
|
|
232
|
+
Args:
|
|
233
|
+
messages: List of messages
|
|
234
|
+
|
|
235
|
+
Returns:
|
|
236
|
+
List of delivery results
|
|
237
|
+
"""
|
|
238
|
+
tasks = [self.send_message(msg) for msg in messages]
|
|
239
|
+
return await asyncio.gather(*tasks)
|
|
240
|
+
|
|
241
|
+
async def get_stats(self) -> Dict[str, Any]:
|
|
242
|
+
"""Get statistics asynchronously"""
|
|
243
|
+
await asyncio.sleep(0.01)
|
|
244
|
+
return {
|
|
245
|
+
"total_messages": 0,
|
|
246
|
+
"delivered": 0,
|
|
247
|
+
"failed": 0
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
class PushNotificationBuilder:
|
|
252
|
+
"""Builder for creating push notifications"""
|
|
253
|
+
|
|
254
|
+
def __init__(self, title: str):
|
|
255
|
+
"""Initialize push notification builder"""
|
|
256
|
+
self.title = title
|
|
257
|
+
self.body = ""
|
|
258
|
+
self.icon = None
|
|
259
|
+
self.badge = None
|
|
260
|
+
self.sound = None
|
|
261
|
+
self.data = {}
|
|
262
|
+
|
|
263
|
+
def with_body(self, body: str) -> "PushNotificationBuilder":
|
|
264
|
+
"""Set notification body"""
|
|
265
|
+
self.body = body
|
|
266
|
+
return self
|
|
267
|
+
|
|
268
|
+
def with_icon(self, icon: str) -> "PushNotificationBuilder":
|
|
269
|
+
"""Set notification icon"""
|
|
270
|
+
self.icon = icon
|
|
271
|
+
return self
|
|
272
|
+
|
|
273
|
+
def with_sound(self, sound: str) -> "PushNotificationBuilder":
|
|
274
|
+
"""Set notification sound"""
|
|
275
|
+
self.sound = sound
|
|
276
|
+
return self
|
|
277
|
+
|
|
278
|
+
def with_data(self, key: str, value: str) -> "PushNotificationBuilder":
|
|
279
|
+
"""Add custom data"""
|
|
280
|
+
self.data[key] = value
|
|
281
|
+
return self
|
|
282
|
+
|
|
283
|
+
def build(self) -> Dict[str, Any]:
|
|
284
|
+
"""Build notification payload"""
|
|
285
|
+
return {
|
|
286
|
+
"title": self.title,
|
|
287
|
+
"body": self.body,
|
|
288
|
+
"icon": self.icon,
|
|
289
|
+
"badge": self.badge,
|
|
290
|
+
"sound": self.sound,
|
|
291
|
+
"data": self.data
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
# Usage examples
|
|
296
|
+
if __name__ == "__main__":
|
|
297
|
+
# Synchronous example
|
|
298
|
+
client = FastDataBrokerClient()
|
|
299
|
+
if client.connect():
|
|
300
|
+
msg = Message(
|
|
301
|
+
sender_id="app1",
|
|
302
|
+
recipient_ids=["user-123"],
|
|
303
|
+
subject="Welcome",
|
|
304
|
+
content=b"Welcome to FastDataBroker!",
|
|
305
|
+
priority=Priority.HIGH
|
|
306
|
+
)
|
|
307
|
+
result = client.send_message(msg)
|
|
308
|
+
print(f"Message delivered: {result.status}")
|
|
309
|
+
client.disconnect()
|
|
310
|
+
|
|
311
|
+
# Asynchronous example
|
|
312
|
+
async def async_example():
|
|
313
|
+
async_client = FastDataBrokerAsyncClient()
|
|
314
|
+
await async_client.connect()
|
|
315
|
+
|
|
316
|
+
messages = [
|
|
317
|
+
Message("app1", ["user-1"], f"Message {i}", b"content") for i in range(10)
|
|
318
|
+
]
|
|
319
|
+
results = await async_client.batch_send(messages)
|
|
320
|
+
print(f"Batch sent: {len(results)} messages")
|
|
321
|
+
|
|
322
|
+
await async_client.disconnect()
|
|
323
|
+
|
|
324
|
+
# asyncio.run(async_example())
|
rst_queue/__init__.py
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"""
|
|
2
|
+
rst_queue - High-Performance Async Queue
|
|
3
|
+
|
|
4
|
+
A high-performance async queue system built with Rust and Crossbeam,
|
|
5
|
+
with native Python support via PyO3.
|
|
6
|
+
|
|
7
|
+
Quick Usage:
|
|
8
|
+
|
|
9
|
+
from rst_queue import AsyncQueue, ExecutionMode
|
|
10
|
+
|
|
11
|
+
def worker(item_id, data):
|
|
12
|
+
print(f"Processing {item_id}: {data}")
|
|
13
|
+
|
|
14
|
+
queue = AsyncQueue(mode=ExecutionMode.PARALLEL, buffer_size=128)
|
|
15
|
+
queue.push(b"Hello World")
|
|
16
|
+
queue.start(worker, num_workers=4)
|
|
17
|
+
|
|
18
|
+
# Get results if using start_with_results
|
|
19
|
+
def result_worker(item_id, data):
|
|
20
|
+
return b"processed: " + data
|
|
21
|
+
|
|
22
|
+
queue2 = AsyncQueue(mode=ExecutionMode.PARALLEL, buffer_size=128)
|
|
23
|
+
queue2.push(b"Hello")
|
|
24
|
+
queue2.start_with_results(result_worker, num_workers=4)
|
|
25
|
+
|
|
26
|
+
# Retrieve result
|
|
27
|
+
result = queue2.get_blocking()
|
|
28
|
+
print(f"Result: {result.result}")
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
__version__ = "0.1.8"
|
|
32
|
+
__author__ = "Suraj Kalbande"
|
|
33
|
+
__email__ = "suraj202923@gmail.com"
|
|
34
|
+
__license__ = "MIT"
|
|
35
|
+
|
|
36
|
+
from enum import IntEnum
|
|
37
|
+
import warnings
|
|
38
|
+
|
|
39
|
+
# Try to import the compiled Rust module
|
|
40
|
+
try:
|
|
41
|
+
from rst_queue._rst_queue import (
|
|
42
|
+
PyAsyncQueue,
|
|
43
|
+
PyAsyncPersistenceQueue,
|
|
44
|
+
PyQueueStats,
|
|
45
|
+
PyProcessedResult,
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
# Try to import AsyncPriorityQueue if available
|
|
49
|
+
try:
|
|
50
|
+
from rst_queue._rst_queue import PyAsyncPriorityQueue
|
|
51
|
+
AsyncPriorityQueue = PyAsyncPriorityQueue
|
|
52
|
+
except ImportError:
|
|
53
|
+
# Fall back to mock if not available
|
|
54
|
+
from rst_queue.mock_implementation import AsyncPriorityQueue
|
|
55
|
+
|
|
56
|
+
# Export with friendly names
|
|
57
|
+
AsyncQueue = PyAsyncQueue
|
|
58
|
+
AsyncPersistenceQueue = PyAsyncPersistenceQueue
|
|
59
|
+
QueueStats = PyQueueStats
|
|
60
|
+
ProcessedResult = PyProcessedResult
|
|
61
|
+
_use_rust = True
|
|
62
|
+
except ImportError as e:
|
|
63
|
+
# Fallback to pure Python mock implementation
|
|
64
|
+
warnings.warn(
|
|
65
|
+
"Using pure Python mock implementation. Install from source or use pre-built wheels "
|
|
66
|
+
"for better performance: pip install --upgrade rst_queue",
|
|
67
|
+
RuntimeWarning
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
from rst_queue.mock_implementation import (
|
|
71
|
+
AsyncQueue,
|
|
72
|
+
AsyncPersistenceQueue,
|
|
73
|
+
AsyncPriorityQueue,
|
|
74
|
+
ExecutionMode,
|
|
75
|
+
Priority,
|
|
76
|
+
QueueStats,
|
|
77
|
+
ProcessedResult,
|
|
78
|
+
)
|
|
79
|
+
_use_rust = False
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
class ExecutionMode(IntEnum):
|
|
83
|
+
"""Execution mode for queue processing
|
|
84
|
+
|
|
85
|
+
SEQUENTIAL (0): Process items one at a time
|
|
86
|
+
PARALLEL (1): Process items in parallel using multiple workers
|
|
87
|
+
"""
|
|
88
|
+
SEQUENTIAL = 0
|
|
89
|
+
PARALLEL = 1
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
class Priority(IntEnum):
|
|
93
|
+
"""Priority levels for queue processing
|
|
94
|
+
|
|
95
|
+
HIGH (2): High priority, processed first
|
|
96
|
+
NORMAL (1): Normal priority (default)
|
|
97
|
+
LOW (0): Low priority, processed last
|
|
98
|
+
"""
|
|
99
|
+
HIGH = 2
|
|
100
|
+
NORMAL = 1
|
|
101
|
+
LOW = 0
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
__all__ = [
|
|
105
|
+
"AsyncQueue",
|
|
106
|
+
"AsyncPersistenceQueue",
|
|
107
|
+
"AsyncPriorityQueue",
|
|
108
|
+
"ExecutionMode",
|
|
109
|
+
"Priority",
|
|
110
|
+
"QueueStats",
|
|
111
|
+
"ProcessedResult",
|
|
112
|
+
"__version__",
|
|
113
|
+
"__author__",
|
|
114
|
+
]
|