2021-10-25 23:15:59 -05:00
2021-10-25 23:15:59 -05:00
2021-10-25 23:13:19 -05:00
2021-10-25 23:15:59 -05:00

pyPledge

pyPledge is a project aimed at making serverless functions capable of being run in a self-hosted manner, while maintaining an easy to use UI.

Features

  • Two different modes of function execution
    • CRON based, scheduled execution
    • Web hook based ad-hoc execution (uuid urls)
  • RESTful JSON API
  • Command Line Interface?
  • Multiple Languages Supported
    • Python
    • JavaScript via Node.js
    • Ruby
    • Bash
    • PHP
  • UI to monitor current status, success and failures of all functions
    • Ability to start, stop or sigterm any function
    • In-browser web editor for direct function creation via the web UI with syntax highlighting

Samples

Starting the Service

  • Single Docker File
    • SQLITE database
    • CRON and web service are all running in one container
    • If any part fails, the entire container goes down
  • Docker Compose/Swarm
    • Any sqlalchemy database supported
    • CRON runs in a separate and/or scalable container setup
    • Webhooks run in a separate and/or scalable container setup

Hello World CRON function

POST https://localhost:8080/api/v1/new

{
    "name": "example_function",
    "lang": "py",
    "deployment": {
      "type": "cron",
      "schedule": "0 * * * *"
    },
    "content": "print('Hello, World!')"
}

The above post request would return the following:

{
  "status": {
    "value": 201,
    "message": "CREATED"
  },
  "name": "example_function"
}

Hello World URL function

POST https://localhost:8080/api/v1/new

{
    "name": "example_function",
    "lang": "py",
    "deployment": {
      "type": "url"
    },
    "content": "print('Hello, World!')"
}

The above post could return the following:

{
  "status": {
    "value": 201,
    "message": "CREATED"
  },
  "name": "example_function",
  "endpoint": "8ca0fbdc-831e-45a9-a9a9-eab896d67811"
}

Once created, navigating to the url https://localhost:8080/8ca0fbdc-831e-45a9-a9a9-eab896d67811 would result in the following output:

{
  "stdout": "Hello, World!"
}
Description
pyPledge is a project aimed at making serverless functions capable of being run in a self-hosted manner, while maintaining an easy to use UI.
Readme 37 KiB