Package: api_hour
API HourAPI-Hour is a lightweight daemon framework, that lets you write powerful applications.It was created to answer the need for a simple, robust, and super-fast server-side environment to build very efficient Daemons with ease.By default, API-Hour Starter Kit (Cookiecutter) creates for you a HTTP daemon to develop WebServices.With API-Hour, you can quickly convert any AsyncIO server library to multi-processing daemon, ready for production.Quick’n’dirty HTTP benchmarks on a kitchen tableScale: Number of queries during 30 seconds with 400 simultaneous connexions.Benchmark made on a Dell Precision M6800 between API-Hour and Gunicorn with 16 workers.For details, read information inbenchmarks.Where is the magic to have theses performances ?Architecture matters a lot more that tools.We use asynchronous and multiprocess patterns, combined together, to handle as much as possible HTTP requests.Ideally, the limitation should be your network card, not your CPU nor memory.Moreover, we’ve tried to reduce as much as possible layers between your code and async sockets.For each layer, we use the best in term of performance and simplicity:AsyncIO: an easy asynchronous framework, directly integrated in Python 3.4+aiohttp.web: HTTP protocol implementation for AsyncIO + Web frameworkujson: fastest JSON serializationExamplesAPI-Hour Starter Kit (Cookiecutter)API-Hour implementation of TechEmpower Web Framework BenchmarksHTTP+SSH DaemonQuick’n’dirty benchmarks on a kitchen tableHow-to start an API-Hour project ?You can followone of our tutorialsSupportDocumentation.Mailing-listRequirementsPython 3.5+InstallFollowofficial documentation.LicenseAPI-Houris offered under the Apache 2 license.ArchitectureAPI-Houris a glue between your code and Gunicorn to launch your code in several process.OriginAPI-Hour was a fork of aiorest, now only based on Gunicorn for multiprocessing.ThanksThanks to Gunicorn, aiorest, aiohttp and AsyncIO community, they made 99,9999% of the job for API-Hour.Special thanks toAndrew Svetlov, the creator of aiorest.Goals of API-HourFast: API-Hour is designed from bottom-up to be extremely fast, and capable of handling a huge load. It uses Python 3 and its new powerful AsyncIO package.Scalable: API-Hour is built to be elastic, and easily scalable.Lightweight:small codebase: Doing less means being faster: the codebase for processing an request is kept as small as possible. Beyond this base foot-print, you can of course activate, preload and initialize more plugins or packages , but that choice is yours.flexible setup: Some people have no problems with using many dependencies, while others want to have none (other than Python). Some people are ok to loose a bit on performance, for the ease (and speed) of coding, while others wouldn’t sacrifice a millisecond  for ready-made functionality. These choices are yours, so there are no mandatory extra layer, plugin or middleware.Easy: API-Hour is meant to be very easy to grasp: No steep learning curve, no mountain of docs to read: Download our turn-key “Hello-world” applications, and immediately start coding your own application from there.Packages-friendly and friendly-packages: We try to let you use external packages without the need to re-write them, adapt them,  “ wrap “ them or embed them in the framework. On the other hand, API-Hour “ plugins “ are written as much as possible to be usable as stand-alone packages outside the framework, to benefit to more people.Asynchronous… or not: If you don’t need the extra complexity of building asynchronous code, you don’t have to (you’ll still enjoy tremendous performance). You can just handle your requests in a traditional synchronous way. On the other hand, if your project does IO or processing that could benefit from parallelizing tasks, the whole power of Async. IO, futures, coroutines and tasks is at your fingertips. All provided plugins (in particular, Database plugins) are Async-ready.CHANGES0.8.2 (2017-11-10)Add pre_start coroutineFix setup.py to check correctly minimal Python version. Thanks @romuald0.8.1 (2016-07-08)Drop support of Python 3.3 and 3.40.7.1 (2016-07-08)Merge bugfix fromhttps://github.com/KeepSafe/aiohttp/pull/8790.7.0 (2015-05-04)Add HTML serializer pluginAdd AsyncIO high level stream server support (Used by FastAGI implementation of Panoramisk)Now, you can use make_handler method to connect directly your handlers with your sockets for more flexibility0.6.2 (2015-02-24)You can customize event loop used with make_event_loop() class method in Container0.6.1 (2015-02-10)Release a new version because PyPI is bugged: 0.6.0 is broken on PyPI0.6.0 (2015-01-13)API-Hour config file is now optional, use -ac to auto-configure your appAdd Python 3.3 compatibility to use easily Python 3 directly from distributions packageAdd Debian/Ubuntu packageujson is now optional for aiohttp.webMore documentation with tutorials: all-in-one and Starter KitIf api_hour CLI has no logging file, enable logging on console by default0.5.0 (2015-01-07)Project rebootChange API-Hour main goal: API-Hour can now multiprocess all AsyncIO lib server, not only HTTPAPI-Hour is now based on GunicornRemove aiorest fork, recommend to use aiohttp.web for HTTP daemons in cookiecutter0.3.3 (2014-12-19)Static files can be served automaticallybody and json_body and transport accessible in Requestloop accessible in ApplicationAsset Serializer accepts encodingcookiecutter available athttps://github.com/Eyepea/cookiecutter-API-HourUse of ujsonBugfixes0.3.2 (2014-10-31)Refactoring and clean-upPublish benchmark server for API-HourEnglish version of PyCON-FR presentation about API-HourFix response.write_eof() to follow aiohttp changes (Thanks aiorest for the patch)0.3.1 (2014-10-28)Rename multi_process to arbiterImprove Python packaging0.3.0 (2014-10-26)First version of API-Hour, performance oriented version of aiorestcookiecutter templateSerialization supportreplace json by ujsonbasic multiprocessing0.2.4 (2014-09-12)Make loop keywork-only parameter in create_session_factory() function0.2.3 (2014-08-28)Redis session switched from asyncio_redis to aioredis0.2.2 (2014-08-15)Added Pyramid-like matchdict to request
(seehttps://github.com/aio-libs/aiorest/pull/18)Return “400 Bad Request” for incorrect JSON body in POST/PUT methodsREADME fixedCustom response status code
(seehttps://github.com/aio-libs/aiorest/pull/23)0.1.1 (2014-07-09)Switched to aiohttp v0.9.00.1.0 (2014-07-07)Basic REST API