Runtime Hooks for AWS Lambda SnapStart - Python
Project description
Snapshot Restore for Python
Description
This is the Snapshot Restore for Python library which can be used for registering runtime hooks in Snapstart enabled Python Lambda functions
This library provides two decorators that you can use to define your runtime hooks:
@register_before_snapshot
- For code you want to run before a snapshot is taken@register_after_restore
- For code you want to run after a snapshot is restored
Alternatively, you can use the following methods to register callables for runtime hooks:
register_before_snapshot(func, *args, **kwargs)
register_after_restore(func, *args, **kwargs)
Code sample
Register hooks using decoratores
from snapshot_restore_py import register_before_snapshot, register_after_restore
def lambda_handler(event, context):
# your logic here
...
@register_before_snapshot
def fn_before_snapshot():
# your logic here
...
@register_after_restore
def fn_after_restore():
# your logic here
...
Register hooks using functions
from snapshot_restore_py import register_before_snapshot, register_after_restore
def lambda_handler(event, context):
// Lambda handler code
def fn_before_snapshot():
# your logic here
...
def fn_after_restore():
# your logic here
...
register_before_snapshot(fn_before_snapshot)
register_after_restore(fn_after_restore)
Please refer to the examples provided for more details.
Important points to note
Execution order
- BeforeSnapshot hooks will run in the reverse order** as they were registered
- AfterRestore hooks will run in the same order as they were registered.
Best Practices
- While decorators are convenient, using functions for hook registration can offer more explicit control over the order of execution and improve code readability.
Registering functions with arguments
- To register a function with specific arguments, just use the
register_...(func, *args, **kwargs)
method.
Importing Modules
- If you register a hook in a file that isn’t imported in your main handler, it will be ignored.
- If you import hooks within the
lambda_handler
, they won’t be executed. Instead, make sure all essential imports are at the top level of your code. This way, your hooks will be recognized and executed as intended!
Duplicate registrations
- If you register a function more than once (like decorating it and registering it again), it’ll run multiple times.
Local environment
-
Pre-installed in Lambda Runtime: When deploying to AWS Lambda, you do not need to include this library in your deployment package, as it is already pre-installed in the Lambda runtime environment.
-
Local Testing Consideration: For local testing, ensure that you include the library in your development dependencies to avoid any import issues during testing.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file snapshot-restore-py-1.0.0.tar.gz
.
File metadata
- Download URL: snapshot-restore-py-1.0.0.tar.gz
- Upload date:
- Size: 3.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4d27f82fb6f09968f422501e9c3c2dea48a46cd19dc798eb7d6cbc57523c8004 |
|
MD5 | 9c451c427df0c42741bd50a127022b33 |
|
BLAKE2b-256 | 27192d7584749a7f6d1b4b3a129995b1bc31e70ed9c5ecc323f1ee748b767268 |
File details
Details for the file snapshot_restore_py-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: snapshot_restore_py-1.0.0-py3-none-any.whl
- Upload date:
- Size: 3.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38f99e696793790f54658e71c68c7a8a40cea877c81232b5052383b1301aceba |
|
MD5 | 65a4167b68085c83e138ea78822d064c |
|
BLAKE2b-256 | 10b8f9da2457e9dfb5872042202d69b329940527672e20cbfdb26610c09e1d8e |