Hi,

I'm proud to announce the 0.5.0 release of API-Hour.
API-Hour now allows you to easily mix any number of different AsyncIO
server libraries, in a multi-process daemon.
It's like Gunicorn, but for AsyncIO server libraries.

For example, a daemon that listens on HTTP and SSH, and shares data between
both parts:
https://github.com/Eyepea/API-Hour/tree/master/examples/http_and_ssh

You can see more examples here:
https://github.com/Eyepea/API-Hour/tree/master/examples

The first class citizen as AsyncIO server is HTTP: we already have several
REST/JSON WebServices based on API-Hour, in production, at real customers.

The main benefit of this architecture is performance, you can see a
quick'n'dirty HTTP benchmarks on a kitchen table:
https://raw.githubusercontent.com/Eyepea/API-Hour/master/propaganda/en/stats.png

We want to be as fast as possible, without becoming difficult to use for
developers.

Most people agree that Python is really cool to write high-level business
logic, but some people still think Python can't do as well as other
(lower-level) languages in terms of performance.
Most of them have don't know how to unleash the power of AsyncIO.

With API-Hour, we want to prove you can have a lightweight framework, with
very good performance and scalability,
while being easy enough to setup so you can immediately concentrate on your
business logic.

API-Hour comes with a Starter Kit (Cookiecutter) to create quickly a daemon
with the right config files (init, syslog...) generated:
https://github.com/Eyepea/cookiecutter-API-Hour

In just 3 commands, and 30 seconds, you'll have a "hello-world" API server,
from which you can start building.

We follow *Production Driven Development* for API-Hour:
We already pushed in production 15+ daemons with API-Hour to validate our
architecture is production-proof.
Some large European companies such as Recticel or Wurth already rely on
API-Hour for business-critical needs, we develop some daemons for them.

Moreover, to help other parties audit our architecture in terms of
performances, API-Hour will participate to round 11 of TechEmpower Web
Framework Benchmarks:
https://www.techempower.com/benchmarks/
Source code:
https://github.com/Eyepea/FrameworkBenchmarks/tree/API-Hour/frameworks/Python/API-Hour

The philosophy behind API-Hour is to be simple as possible.
For example, API-Hour is *WYDIWYP* (What You Dev Is What You Prod): It
means that it the same executable during your dev that is used on
production, to reduce surprises and simplify the production deployment.

In fact, for the small and medium deployments, a standalone API-Hour daemon
is enough.
For big deployments, we use HAProxy to distribute the load and Nginx to
serve static content.

Obviously, none of them is mandatory and you can customize your production
setup the way you want.

We propose also an architecture for your daemons, but it isn't mandatory to
follow:
https://pythonhosted.org/api_hour/application_architecture.html

FYI, API-Hour is based on Gunicorn.
In the past, API-Hour was a fork of aiorest, it isn't the case anymore
because we now use directly aiohttp.web, a great framework to make HTTP
AsyncIO servers.

If you have remarks, questions, or ideas to improve performance, you can
send us a message on: https://groups.google.com/forum/#!forum/api-hour

Regards.
--
Ludovic Gasc

Reply via email to