Serverless asynchronous task execution
Project description
Asynchronous Serverless Task Execution
Chili-Pepper is a simple framework that makes it easy to execute tasks without interrupting the main flow of your application. It handles serverless deployment and task execution. It allows you to run important functions in parallel with your main application with zero downtime, zero maintenance and infinite scaling.
Command
usage: chili [-h] [--app APP] {deploy} ...
Serverless asynchronous tasks
positional arguments:
{deploy} Chili-Pepper commands
deploy Deploy functions to serverless provider
optional arguments:
-h, --help show this help message and exit
--app APP, -A APP The Chili-Pepper application location
Getting Started
Installing Chili-Pepper
pip install chili-pepper
Serverless Provider
Next, you need to configure your serverless provider credentials.
Amazon Web Services (AWS)
You can provide AWS credentials in many ways, including environment variables, your aws credentials file, or a server role. See the boto3 documentation about credential configuration for details.
These credentials need to be allowed to create, execute and delete AWS Lambda functions and IAM roles.
You will also need an S3 bucket (with versioning enabled).
Azure
Microsoft Azure Cloud is not supported at this time, but there are plans to support it in the future.
Google Cloud
Google Cloud is not supported at this time, but there are plans to support it in the future.
Creating the Chili-Pepper App
The Chili-Pepper app will be used to identify and deploy your functions to the serverless cloud provider.
app = ChiliPepper(app_name="demo")
Of course, the app variable can have any name - we’ll be calling it app in these examples.
AWS Configuration
You need to pass these required AWS specific configs to the app. For a full list of AWS configuration options, see Aws Configuration.
Bucket
app.conf["aws"]["bucket_name"] = "my-chili-pepper-bucket"
This bucket will be used for storing AWS Lambda deployment packages. You should enable versioning on the bucket.
Runtime
app.conf["aws"]["runtime"] = "python3.7"
AWS Lambda supports several python runtimes. See the lambda runtime documentation for a full list. You must pass the “Identifier” for the runtime of your choice to the Chili-Pepper app config.
Creating a Task
You can use the Chili-Pepper app to identify tasks that should be run.
@app.task()
def my_task(event, context):
return f"Hello {event['name']}!"
Deploying
Before you can asynchronously call your task, you must deploy it to your cloud provider.
chili deploy --app my_module.tasks.app
AWS Deployment
Calling deploy will create a zipfile containing your code as well as any python dependencies. Chili-Pepper will then use upload that zipfile to your S3 bucket, and use Cloudformation to create an AWS Lambda function for each of the tasks you identified with the app.task() decorator.
Calling your task
Now that you’ve deployed your tasks to the cloud, you can call them asynchronously.
task_result = my_task.delay({"name": "Jalapeno"})
print(task_result.get())
This will print Hello Jalapeno!, after executing my_task in a serverless function.
Support
Chili-Pepper is built by a 1 person team supported by these awesome backers, supporters and sponsors. If you use Chili-Pepper, I would love to hear from you! And, if I have earned your support, please consider backing me on Patreon.
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 chili_pepper-0.0.3.tar.gz
.
File metadata
- Download URL: chili_pepper-0.0.3.tar.gz
- Upload date:
- Size: 23.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 24743aeb7cecd814d4f9c07f7ed57226826221d1a57dc49d55018df570107bb4 |
|
MD5 | 60659fe6f685e3656c8da7961779f1b3 |
|
BLAKE2b-256 | 7036c886076dba1498d0cded581aee92d2bce60b149c7ec9e212732841cc8540 |
File details
Details for the file chili_pepper-0.0.3-py2.py3-none-any.whl
.
File metadata
- Download URL: chili_pepper-0.0.3-py2.py3-none-any.whl
- Upload date:
- Size: 18.7 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5b994c14ed3ba75d08f0e951ffe654d043d1b9793165599bdfb75f6ddc43daa5 |
|
MD5 | b99aa77da4705ffd275902674292b86b |
|
BLAKE2b-256 | b5456a3d39efc24f9f1e5161a9882deab5e8dbbf3d951d39868311356ef65254 |