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
