rappel 0.4.1__py3-none-win_amd64.whl → 0.8.1__py3-none-win_amd64.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.

Potentially problematic release.


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

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rappel
3
- Version: 0.4.1
3
+ Version: 0.8.1
4
4
  Summary: Distributed & durable background events in Python
5
5
  Requires-Python: >=3.10
6
6
  Requires-Dist: googleapis-common-protos>=1.72.0
@@ -155,19 +155,38 @@ If you have a particular workflow that you think should be working but isn't yet
155
155
 
156
156
  The main rappel configuration is done through env vars, which is what you'll typically use in production when using a docker deployment pipeline. If we can't find an environment parameter we will fallback to looking for an .env that specifies it within your local filesystem.
157
157
 
158
+ These are the primary environment parameters that you'll likely want to customize for your deployment:
159
+
158
160
  | Environment Variable | Description | Default | Example |
159
161
  |---------------------|-------------|---------|---------|
160
- | `DATABASE_URL` | PostgreSQL connection string for the rappel server | (required) | `postgresql://user:pass@localhost:5433/rappel` |
161
- | `RAPPEL_HTTP_ADDR` | HTTP bind address for `rappel-bridge` | `127.0.0.1:24117` | `0.0.0.0:24117` |
162
- | `RAPPEL_GRPC_ADDR` | gRPC bind address for `rappel-bridge` | HTTP port + 1 | `0.0.0.0:24118` |
162
+ | `RAPPEL_DATABASE_URL` | PostgreSQL connection string for the rappel server | (required on bridge &workers ) | `postgresql://user:pass@localhost:5433/rappel` |
163
163
  | `RAPPEL_WORKER_COUNT` | Number of Python worker processes | `num_cpus` | `8` |
164
164
  | `RAPPEL_CONCURRENT_PER_WORKER` | Max concurrent actions per worker | `10` | `20` |
165
165
  | `RAPPEL_USER_MODULE` | Python module preloaded into each worker | none | `my_app.actions` |
166
166
  | `RAPPEL_POLL_INTERVAL_MS` | Poll interval for the dispatch loop (ms) | `100` | `50` |
167
- | `RAPPEL_BATCH_SIZE` | Max actions fetched per poll | `workers * concurrent_per_worker` | `200` |
167
+ | `RAPPEL_MAX_ACTION_LIFECYCLE` | Max actions per worker before recycling (see below) | none (no limit) | `1000` |
168
168
  | `RAPPEL_WEBAPP_ENABLED` | Enable the web dashboard | `false` | `true` |
169
169
  | `RAPPEL_WEBAPP_ADDR` | Web dashboard bind address | `0.0.0.0:24119` | `0.0.0.0:8080` |
170
170
 
171
+ We expect that you won't need to modify the following env parameters, but we provide them for convenience:
172
+
173
+ | Environment Variable | Description | Default | Example |
174
+ |---------------------|-------------|---------|---------|
175
+ | `RAPPEL_HTTP_ADDR` | HTTP bind address for `rappel-bridge` | `127.0.0.1:24117` | `0.0.0.0:24117` |
176
+ | `RAPPEL_GRPC_ADDR` | gRPC bind address for `rappel-bridge` | HTTP port + 1 | `0.0.0.0:24118` |
177
+ | `RAPPEL_BATCH_SIZE` | Max actions fetched per poll | `workers * concurrent_per_worker` | `200` |
178
+ | `RAPPEL_GC_INTERVAL_MS` | Garbage collection interval (ms) | `none` (disabled) | `60000` |
179
+ | `RAPPEL_GC_RETENTION_SECONDS` | Minimum age for completed/failed instances before cleanup | `86400` | `604800` |
180
+ | `RAPPEL_GC_BATCH_SIZE` | Max instances cleaned per GC cycle | `100` | `500` |
181
+
182
+ ### Worker Recycling
183
+
184
+ The `RAPPEL_MAX_ACTION_LIFECYCLE` setting controls how many actions a Python worker process can execute before being automatically recycled (shut down and replaced with a fresh process). This can help mitigate memory leaks in third-party libraries that may accumulate memory over time.
185
+
186
+ When a worker reaches its action limit, rappel spawns a replacement worker before retiring the old one. Any in-flight actions on the old worker will complete normally before the process terminates. This ensures zero downtime during recycling.
187
+
188
+ By default, this is set to `None` (no limit), meaning workers run indefinitely. If you notice memory growth in your workers over time, try setting this to a value like `1000` or `10000` depending on your action characteristics.
189
+
171
190
  ## Philosophy
172
191
 
173
192
  Background jobs in webapps are so frequently used that they should really be a primitive of your fullstack library: database, backend, frontend, _and_ background jobs. Otherwise you're stuck in a situation where users either have to always make blocking requests to an API or you spin up ephemeral tasks that will be killed during re-deployments or an accidental docker crash.
@@ -0,0 +1,32 @@
1
+ proto/ast_pb2.py,sha256=cYsU8cIKylnJmhhuw9t7tnqChxUZSUuYcaLnfMoj6PI,13919
2
+ proto/ast_pb2.pyi,sha256=Lf9TrNyVOq5imfk8SuCa9jxxZ_mjn1FJFO7onZgEMB4,52436
3
+ proto/ast_pb2_grpc.py,sha256=o2pCTeLO0yrFf0G9tvXiW5FbNQcX6dTZW3Dhh2iXp4g,892
4
+ proto/ast_pb2_grpc.pyi,sha256=r1dIOwEi02duT6jiuPHWbC01f5z-dBoXc18gZ54pKZA,488
5
+ proto/messages_pb2.py,sha256=mrOpLehJT5FiyQfIXh8ibwGlK-UziG_srZ_7eBfEigA,12984
6
+ proto/messages_pb2.pyi,sha256=3DliL2FGH-xKC6FrrkW0No1J2VPxAe8LDMz3mz0pSKE,42430
7
+ proto/messages_pb2_grpc.py,sha256=6MhQxDSSTSiW55qZh7nIRtiEsuBp5t9tCbcZxiuWcF4,16252
8
+ proto/messages_pb2_grpc.pyi,sha256=dAauApqvlu5Ij7JncrOIhKgcQZJEeV8FrdoJydMbfRo,12702
9
+ rappel/__init__.py,sha256=74B_EWJ0PJZSVhvAK54l-DTM7lzs0IbfMNFPVRONpmI,1475
10
+ rappel/actions.py,sha256=uVfxbDWaprVh7IElsmePlmJCufjqp6Y2xso00ZlbM3I,3955
11
+ rappel/bridge.py,sha256=p_WXjZFyixH4aYvlfknUHT2YKtxBt_uthvxMQ1DFjGI,8356
12
+ rappel/dependencies.py,sha256=OkgxNG1mXMGepxmDMPxBwqd8Y4ebyIMoxOTbb33FQ9M,5789
13
+ rappel/exceptions.py,sha256=TogxmVclvWuui-j6UTSxUQ0kwIhVd5q0BRotsuXNHWw,587
14
+ rappel/formatter.py,sha256=mNLJ24nkl5zN-zXe_ObpZGeC__Pyv-7J-iPde-wLvbM,3223
15
+ rappel/ir_builder.py,sha256=2BcRBDNYj5OX7Ze547e3wH1MHSrO_R4EfdDJNj1w8nM,157945
16
+ rappel/logger.py,sha256=auFfr0gdVP9J53OiADhJlCSdS9As-1DA14WNtAqgv3Y,1157
17
+ rappel/registry.py,sha256=Lk03QAifc-VOCAibhCRYCYhygUQlfEH3J62Md17UJRI,3808
18
+ rappel/schedule.py,sha256=55smTL8Qmn9eCb5F574tF8HijarHD_35hei0UhCc-S0,12068
19
+ rappel/serialization.py,sha256=Q2naNTSLS72XLYi-HUswGmYuhx2dCxibjGdDeG3-s4I,11333
20
+ rappel/worker.py,sha256=0iZkruFbGBXLLZNmENqxGF4f-ot5v9m0HzWNt8pT24s,7027
21
+ rappel/workflow.py,sha256=JGupCK9tPPCZnHl3sNBbzJdsGuBmqaquw1HNFrhSdCo,9026
22
+ rappel/workflow_runtime.py,sha256=TcYAi5CkzneSTG_9LQI4Nn872PIC5RtKEABL1jUXLwU,9325
23
+ rappel/bin/boot-rappel-singleton.exe,sha256=UfciRWthMLB7KvkVMqqxB2DQUIQwgK7zZhP5YjmL3hE,4694528
24
+ rappel/bin/rappel-bridge.exe,sha256=_QKboGKgnW2wzPpG4wypQp54t3h4rRnitNWOmddOxgc,8730624
25
+ rappel/bin/start-workers.exe,sha256=hsGqkI5yI-4esOZKzLYW6Uv9QhCLgDPIdv-0kCv_bzA,16742912
26
+ rappel-0.8.1.dist-info/METADATA,sha256=ZQSr25SRLsbq0uvjU-S8GP39bjyVBTLB6B9AXj3EczY,16923
27
+ rappel-0.8.1.dist-info/entry_points.txt,sha256=h9D-AufOUWpdE7XjnyZyQCc-kER-ZIKj1Jryc1JNL_I,53
28
+ rappel-0.8.1.dist-info/RECORD,,
29
+ rappel-0.8.1.data/scripts/boot-rappel-singleton.exe,sha256=UfciRWthMLB7KvkVMqqxB2DQUIQwgK7zZhP5YjmL3hE,4694528
30
+ rappel-0.8.1.data/scripts/rappel-bridge.exe,sha256=_QKboGKgnW2wzPpG4wypQp54t3h4rRnitNWOmddOxgc,8730624
31
+ rappel-0.8.1.data/scripts/start-workers.exe,sha256=hsGqkI5yI-4esOZKzLYW6Uv9QhCLgDPIdv-0kCv_bzA,16742912
32
+ rappel-0.8.1.dist-info/WHEEL,sha256=phIoPJnECdbLLKrTiGU1mv92w_v6wBxRMAejLbbrKno,94
@@ -1,32 +0,0 @@
1
- proto/ast_pb2.py,sha256=SzKthXwCp7WcCtxwkGeXCzXM547FziGGw4reMxITgWY,13426
2
- proto/ast_pb2.pyi,sha256=T7TdeA17MwGimm6oaIYyR6cftXmF-UdEf39bGFNXTDA,51866
3
- proto/ast_pb2_grpc.py,sha256=o2pCTeLO0yrFf0G9tvXiW5FbNQcX6dTZW3Dhh2iXp4g,892
4
- proto/ast_pb2_grpc.pyi,sha256=r1dIOwEi02duT6jiuPHWbC01f5z-dBoXc18gZ54pKZA,488
5
- proto/messages_pb2.py,sha256=Zcvm0ONz-9xo2-LPMinbHKC1rLJUAtWUfm_y4h7eKEM,12592
6
- proto/messages_pb2.pyi,sha256=lzv_RubGC8ZNVwh70FQr6DI9MECKHbvmVrL0hcBUDPc,39801
7
- proto/messages_pb2_grpc.py,sha256=6MhQxDSSTSiW55qZh7nIRtiEsuBp5t9tCbcZxiuWcF4,16252
8
- proto/messages_pb2_grpc.pyi,sha256=dAauApqvlu5Ij7JncrOIhKgcQZJEeV8FrdoJydMbfRo,12702
9
- rappel/__init__.py,sha256=2jnekFrCK42PbFxBiXKLa5wzzYcIy7VQ1zFizv1ZUpo,1391
10
- rappel/actions.py,sha256=wUcmBCLjMb-406T7N5S-uR73p9grKbfomXLNjsQvFpo,2735
11
- rappel/bridge.py,sha256=t-j6k3rHO84qIoOB_VFCUJ87RHKwDDHejxXkNsfQfi0,8219
12
- rappel/dependencies.py,sha256=40NiWV9fsn-_G5XivCUz2OMNoYC2H6cdVAQG7ziEhS0,5347
13
- rappel/exceptions.py,sha256=mLkNf1a44rbRxuFZp9saiSp0Ec3Y4gXPXI7Ozkhdt1U,348
14
- rappel/formatter.py,sha256=mNLJ24nkl5zN-zXe_ObpZGeC__Pyv-7J-iPde-wLvbM,3223
15
- rappel/ir_builder.py,sha256=wBLdp0pndpBSmzLXGIVGZJ6p4k4OlNi30xErY2Z7ZDk,128070
16
- rappel/logger.py,sha256=auFfr0gdVP9J53OiADhJlCSdS9As-1DA14WNtAqgv3Y,1157
17
- rappel/registry.py,sha256=AZftT8r-Lsb0JgX6vbbnydqegheYXViYsCzF_NoqX40,2302
18
- rappel/schedule.py,sha256=k_DD2BZBnJCK60VoOLlIJh6QHIIMiEnSOKsUSRved_I,9464
19
- rappel/serialization.py,sha256=k4uq_Wka5ptVYp0SIjXD5zflbmgxUV05pNmQs-b5i8o,8028
20
- rappel/worker.py,sha256=0iZkruFbGBXLLZNmENqxGF4f-ot5v9m0HzWNt8pT24s,7027
21
- rappel/workflow.py,sha256=Jv6SzPhLxS6oNfiKFCbp7GroWK8rGY1pMd8JqoVEPDM,8270
22
- rappel/workflow_runtime.py,sha256=GBLaAi1MB7rQmTtL7adAJt9rDLoWS9n52aD1YcJA-ZI,4403
23
- rappel/bin/boot-rappel-singleton.exe,sha256=_qbWkDd4tfd4WkfMW6-m1Z1SxFtGE06UXgZO024TVrU,5104128
24
- rappel/bin/rappel-bridge.exe,sha256=kOGR0ENIJ_c3qjpz85yFEhaVnBmvTezclXchCk-Z79g,9680896
25
- rappel/bin/start-workers.exe,sha256=wKdShH7oKt0Gmhkvkhx0xBOR1TvPD-CytRBvyli0cAw,15662592
26
- rappel-0.4.1.dist-info/METADATA,sha256=xUr4y0umv-V16uvqR9UO3LmaswP-eGo-DTiUjYl5Lbk,15381
27
- rappel-0.4.1.dist-info/entry_points.txt,sha256=h9D-AufOUWpdE7XjnyZyQCc-kER-ZIKj1Jryc1JNL_I,53
28
- rappel-0.4.1.dist-info/RECORD,,
29
- rappel-0.4.1.data/scripts/boot-rappel-singleton.exe,sha256=_qbWkDd4tfd4WkfMW6-m1Z1SxFtGE06UXgZO024TVrU,5104128
30
- rappel-0.4.1.data/scripts/rappel-bridge.exe,sha256=kOGR0ENIJ_c3qjpz85yFEhaVnBmvTezclXchCk-Z79g,9680896
31
- rappel-0.4.1.data/scripts/start-workers.exe,sha256=wKdShH7oKt0Gmhkvkhx0xBOR1TvPD-CytRBvyli0cAw,15662592
32
- rappel-0.4.1.dist-info/WHEEL,sha256=phIoPJnECdbLLKrTiGU1mv92w_v6wBxRMAejLbbrKno,94
File without changes