Skip to main content

Airless

PyPI version

Airless is a package that aims to build a serverless and lightweight orchestration platform, creating workflows of multiple tasks being executed on Google Cloud Functions

Why not just use Apache Airflow?

Airflow is the industry standard when we talk about job orchestration and worflow management. However, in some cases, we believe it may not be the best solution. I would like to highlight 3 main cases we face that Airflow struggles to handle.

  • Serverless

At the beginning of a project we want to avoid dealing with infrastructure since it demands time and it has a fixed cost to reserve an instance to run Airflow. Since we didn't have that many jobs, it didn't make sense to have an instance of Airflow up 24-7.

When the project starts to get bigger and, if we use Airflow's instance to run the tasks, we start facing performance issues on the workflow.

In order to avoid this problems we decided to build a 100% serverless platform.

  • Parallel processing

The main use case we designed Airless for is for data scrappers. The problem with data scrappers is that normally you want them to process a lot of tasks in parallel, for instance, first you want to fetch a website and collect all links in that page and send them forward for another task to be executed and then that task does the same and so on and so forth.

Building this workflow that does not know before hand how many tasks are going to be executed is something hard be built on Airflow.

  • Data sharing between tasks

In order to built this massive parallel processing workflow that we explained on the previous topic, we need to be able to dynamically create and send data to the next task. So use the data from the first task as a trigger and an input data for the next tasks.

How it works

Airless builts its workflows based on Google Cloud Functions, Google Pub/Sub and Google Cloud Scheduler.

  1. Everything starts with the Cloud Scheduler, which is a serverless product from Google Cloud that is able to publish a message to a Pub/Sub with a cron scheduler
  2. When a message is published to a Pub/Sub it can trigger a Cloud Function and get executed with that message as an input
  3. This Cloud Functions is able to publish as many messages as it wants to as many Pub/Sub topics as it wants
  4. Repeat from 2

Preparation

Environment variables

  • ENV
  • GCP_PROJECT
  • PUBSUB_TOPIC_ERROR
  • LOG_LEVEL
  • PUBSUB_TOPIC_EMAIL_SEND
  • PUBSUB_TOPIC_SLACK_SEND
  • BIGQUERY_DATASET_ERROR
  • BIGQUERY_TABLE_ERROR
  • EMAIL_SENDER_ERROR
  • EMAIL_RECIPIENTS_ERROR
  • SLACK_CHANNELS_ERROR

Release files for airless 0.0.73

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for airless 0.0.73
File Size Uploaded
airless-0.0.73.tar.gz 22.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for airless 0.0.73
File Interpreter ABI Platform
airless-0.0.73-py3-none-any.whl Python 3 none any Details

Total release size: 51.8 kB

Release files / airless-0.0.73.tar.gz

Download URL airless-0.0.73.tar.gz
Size 22.4 kB
Tags Source
SHA-256 checksum
How to use checksums
330046c05b81d359344871178e0a9c50ce5e0227ca55717015833ebc70c66217
BLAKE2b-256 checksum
How to use checksums
54c7a003b516882a54aab4983c9e5dec757803638ff2311f8f902e41acc71bd8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.12.5

Release files / airless-0.0.73-py3-none-any.whl

Download URL airless-0.0.73-py3-none-any.whl
Size 29.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5d0827430672a5331bb4e756ec741c2b3986b9915133aeb7e8d880f88cd0c562
BLAKE2b-256 checksum
How to use checksums
a1fdeffbcddd5f76b88e68a17677d8963c18b3ed5f83d1893ab7aef56c58bb2b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.12.5

Release history Release notifications | RSS feed

This release

0.0.73 This release

2 release files

0.0.72

2 release files

0.0.70

2 release files

0.0.68

2 release files

0.0.67

2 release files

0.0.66

2 release files

0.0.62

2 release files

0.0.61

2 release files

0.0.60

2 release files

0.0.58

2 release files

0.0.57

2 release files

0.0.56

2 release files

0.0.55

2 release files

0.0.53

2 release files

0.0.52

2 release files

0.0.51

2 release files

0.0.50

2 release files

0.0.49

2 release files

0.0.44

2 release files

0.0.43

2 release files

0.0.42

2 release files

0.0.41

2 release files

0.0.39

2 release files

0.0.38

2 release files

0.0.36

2 release files

0.0.35

2 release files

0.0.32

2 release files

0.0.31

2 release files

0.0.20

2 release files

0.0.19

2 release files

0.0.18

2 release files

0.0.17

2 release files

0.0.16

2 release files

0.0.15

2 release files

0.0.14

2 release files

0.0.13

2 release files

0.0.12

2 release files

0.0.11

2 release files

0.0.10

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page