All Projects → TeskaLabs → asab

TeskaLabs / asab

Licence: BSD-3-Clause license
Asynchronous Server App Boilerplate (ASAB) is a micro-service framework for Python 3 and asyncio.

Programming Languages

python
139335 projects - #7 most used programming language
Dockerfile
14818 projects

Projects that are alternatives of or similar to asab

WPWatcher
Wordpress Watcher is a wrapper for WPScan that manages scans on multiple sites and reports by email and/or syslog. Schedule scans and get notified when vulnerabilities, outdated plugins and other risks are found.
Stars: ✭ 34 (+30.77%)
Mutual labels:  asynchronous
torequests
Async wrapper for requests / aiohttp, and some crawler toolkits. Let synchronization code enjoy the performance of asynchronous programming.
Stars: ✭ 22 (-15.38%)
Mutual labels:  asynchronous
spacer
🚀Serverless function platform for Lua
Stars: ✭ 50 (+92.31%)
Mutual labels:  kappa-architecture
hyper-content-db
A Kappa-style peer-to-peer content database, on top of hyperdrives.
Stars: ✭ 34 (+30.77%)
Mutual labels:  kappa-architecture
twitch api2
Rust library for talking with the Twitch API aka. "Helix", TMI and more! Use Twitch endpoints fearlessly!
Stars: ✭ 91 (+250%)
Mutual labels:  asynchronous
Hunch
Hunch provides functions like: All, First, Retry, Waterfall etc., that makes asynchronous flow control more intuitive.
Stars: ✭ 94 (+261.54%)
Mutual labels:  asynchronous
StateBuilder
State machine code generator for C++ and Java.
Stars: ✭ 30 (+15.38%)
Mutual labels:  asynchronous
ridge
Pure asynchronous PHP implementation of the AMQP 0-9-1 protocol.
Stars: ✭ 49 (+88.46%)
Mutual labels:  asynchronous
drone-stm32-map
STM32 peripheral mappings for Drone, an Embedded Operating System.
Stars: ✭ 16 (-38.46%)
Mutual labels:  asynchronous
async
Synchronization and asynchronous computation package for Go
Stars: ✭ 104 (+300%)
Mutual labels:  asynchronous
SierraChartZorroPlugin
A Zorro broker API plugin for Sierra Chart, written in Win32 C++.
Stars: ✭ 22 (-15.38%)
Mutual labels:  asynchronous
nautilus.js
[separated fork] Async JavaScript loader & dependency manager in ~600B [gziped]
Stars: ✭ 59 (+126.92%)
Mutual labels:  asynchronous
Galaxy
Galaxy is an asynchronous parallel visualization ray tracer for performant rendering in distributed computing environments. Galaxy builds upon Intel OSPRay and Intel Embree, including ray queueing and sending logic inspired by TACC GraviT.
Stars: ✭ 18 (-30.77%)
Mutual labels:  asynchronous
async-sockets
Library for asynchronous work with sockets based on php streams
Stars: ✭ 45 (+73.08%)
Mutual labels:  asynchronous
core.horse64.org
THIS IS A MIRROR, CHECK https://codeberg.org/Horse64/core.horse64.org
Stars: ✭ 3 (-88.46%)
Mutual labels:  asynchronous
blackhole
Blackhole is an MTA written on top of asyncio, utilising async and await statements that dumps all mail it receives to /dev/null.
Stars: ✭ 61 (+134.62%)
Mutual labels:  asynchronous
erl dist
Rust Implementation of Erlang Distribution Protocol
Stars: ✭ 110 (+323.08%)
Mutual labels:  asynchronous
ytpy
Python asynchronous wrapper for searching for youtube videos.
Stars: ✭ 19 (-26.92%)
Mutual labels:  asynchronous
aioudp
Asyncio UDP server
Stars: ✭ 21 (-19.23%)
Mutual labels:  asynchronous
bytecodec
A tiny Rust framework for implementing encoders/decoders of byte-oriented protocols
Stars: ✭ 21 (-19.23%)
Mutual labels:  asynchronous

Asynchronous Server App Boilerplate

Asynchronous Server App Boilerplate (or ASAB for short) is a microservice framework for Python 3 and asyncio. The aim of ASAB is to minimize the amount of code that needs to be written when building a microservice or an aplication server. ASAB is fully asynchronous using async/await syntax from Python 3, making your code modern, non-blocking, speedy and hence scalable. We make every effort to build ASAB container-friendly so that you can deploy ASAB-based microservice via Docker or Kubernetes in a breeze.

ASAB is the free and open-source software, available under BSD licence. It means that anyone is freely licenced to use, copy, study, and change the software in any way, and the source code is openly shared so that people could voluntarily improve the design of the software. Anyone can (and is encouraged to) use ASAB in his or her projects, for free.

ASAB is currently used for microservices, web application servers, ETL or stream processors.

ASAB is developed on GitHub. Contributions are welcome!

https://travis-ci.com/TeskaLabs/asab.svg?branch=master Join the chat at https://gitter.im/TeskaLabs/asab

Installation

pip install asab

Documentation

Example

#!/usr/bin/env python3
import asab
import asab.web
import aiohttp

class MyApplication(asab.Application):

    def __init__(self):
        # Load the ASAB Web module
        super().__init__(modules=[asab.web.Module])

        # Locate the Web service
        websvc = self.get_service("asab.WebService")

        # Create the Web container
        container = asab.web.WebContainer(websvc, 'my:web', config={"listen": "0.0.0.0:8080"})

        # Add a route to the handler
        container.WebApp.router.add_get('/', self.hello)

    # This is the web request handler
    async def hello(self, request):
        return aiohttp.web.Response(text="Hello, world!\n")

if __name__ == '__main__':
    # Create and start the application
    # The application will be available at http://localhost:8080/
    app = MyApplication()
    app.run()

Microservices

Here is a growing list of Open Source microservices built using ASAB:

  • ASAB Iris: document rendering, sends output using email, SMS and instant messaging
  • SeaCat Auth: authentication, authorization, identity management, session management and other access control features

Highlights

  • Unified approach to Configuration
  • Logging using reasonably configured Python logging module
  • Build-in and custom Metrics with feeds into InfluxDB and Prometheus
  • Alerting with integration to PagerDuty and OpsGenie.
  • HTTP Server powered by aiohttp library
  • Apache Zookeeper Client provides shared consensus across microservices’ cluster
  • Persistent storage abstraction based on upsertor for MongoDB and ElasticSearch
  • Pub/Sub
  • Dependency injection using Modules and Services
  • Proactor pattern service for long-running synchronous work
  • Task service
  • Unified microservice API

Automatic API documentation

The REST API is automatically documented using OpenAPI3 standard and the Swagger.

https://github.com/TeskaLabs/asab/raw/master/doc/openapi3-swagger.jpg

Principles

  • Write once, use many times
  • Keep it simple
  • Well documented
  • Asynchronous via Python 3 async/await and asyncio
  • Event-driven Architecture / Reactor pattern
  • Single-threaded core but compatible with threads
  • First-class support for containerization
  • Compatible with pypy, Just-In-Time Python compiler
  • Kappa architecture
  • Support for introspection
  • Modularized

Video tutorial

http://img.youtube.com/vi/77StpWxOIBc/0.jpg

Licence

ASAB is an open-source software, available under BSD 3-Clause License. ASAB is maintained by TeskaLabs Ltd.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].