Jump to content

User:Cipherking/Falcon (computer software)

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Cipherking (talk | contribs) at 18:13, 16 September 2015. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Falcon
Original author(s)Kurt Griffiths (kgriffs)
Developer(s)Rackspace
Initial release19 March 2013; 12 years ago (2013-03-19)[1]
Written inPython
TypeWeb application framework
LicenseApache
Websitefalconframework.org

Falcon is a Python web framework which aims at developing cloud APIs keeping in mind speed as its topmost priority.[2] Falcon is designed around the concept of creating RESTful services such that each transition maps to an HTTP verb. This encourages the programmer to think more towards managing resources and transitions.[2] It uses WSGI.[2]

History

Falcon was created by Kurt Griffiths (kgriffs) in March 2013. Falcon is currently maintained by him and a number of other contributors of Falcon. Falcon is an Apache-licensed community project developed by Rackspace. It has had 26 releases till now. Its first version came into existence on March 19, 2013. [1]

Design Goals

High Speed

Falcon is basically designed for APIs that require a high speed. It responds much more faster than most other web frameworks. [2]

Minimalist Framework Design

Only the most essential elements are included in Falcon along with a few others such as six and mimeparse. This makes Falcon lighter and easier to test and deploy.[2]

Flexibility

Falcon is not rigid to any particular deployment method. It is compatible with CPython 2.6/2.7, PyPy, Jython 2.7, and CPython 3.3/3.4. It is not dependent on any database. This makes it even more flexible.[2]

Features

  • Less cluttered code base, enabling easy extensibility[1]
  • URI templates for intuitive routing[1]
  • Individual classes for headers and bodies, enabling easy access to HTTP requests and responses[1]
  • Independent of WebOb[2]
  • Easy to interpret HTTP exceptions via extensible classes.[1]
  • Fully integrated unit testing framework[1]
  • CPython 2.6/2.7, PyPy, Jython 2.7, and CPython 3.3/3.4 support[2]
  • Considerable boost over various frameworks.[2]


Importance and Relevance

Performance

Falcon has optimizations built it to ensure that overall application level performance is not affected even when it is subjected to concurrent workloads. Since falcon handles it at framework level it doesn’t need extra/modified hardware to do so.[2]

Freedom

Unlike most web frameworks falcon doesn’t impose much restrictions and coding conventions on the programmer. This may result into more code but can also be viewed as an aspect that lets programmers choose their own implementation[2]

Reliability

Falcon has kept dead and unused to a minimum. This leads to lighter code with fewer bugs. The project uses some automatic code coverage tools to keep in check.[2]

Given a choice Falcon may not be the most appropriate choice for a web project. It depends a lot on what a programmer looks for. The following points summarize what may encourage a developer to consider falcon for a project

Reusability

If the development activity is such that it has a mix of front-end and back-end development then Falcon may not be the right choice. However, if the design is more centric on creating static assets then it can support it pretty well.[3]

Implementation

The focus of this framework is to help write cleaner code but also improve upon the performance it brings in. Hence it interacts at the lower-levels of development. For fast development alternatives like Django, Pecan or Flask may be considered[3]

Maturity

Although it has been under active development for quite sometime, it is still not fully tested for all scenarios.[3]

Benchmarks

Falcon has been subjected to many benchmark tests which were compared to many other frameworks. The tests have proven a tremendous speed up in cases where Falcon was used. Under a an almost idealistic scenario simulated on Rackspace servers, version 0.3.0 of falcon has proved falcon’s ability to handle 21,858 req/sec[4]. In case of more realistic scenarios results have shown that falcon can work through 14,384 req/sec[4]. various such results have been well documented on falcon’s website. Although performance of Falcon may look very promising in terms of Python, it is still slower as compared to many frameworks running on Go (programming language), Java (programming language) and PHP[5][6][7].

Installation

Falcon compiles itself with Cython depending upon availability of the latter in order to give high performance and increased speed. To install cython along with falcon the following command is used.[8]

$ pip install --upgrade cython falcon

For further reading the following links may be referred to :

References

  1. ^ a b c d e f g "Falcon - github.com/falconry/falcon". github.com/falconry/falcon. Retrieved 2015-09-16.
  2. ^ a b c d e f g h i j k l "Falcon - The minimalist Python WSGI framework". falconframework.org. Retrieved 2015-09-16.
  3. ^ a b c Griffiths, Kurt. "An Unladen Web Framework : Blog – Software is for Humans". blog.kgriffs.com. Retrieved 2015-09-16.
  4. ^ a b "Falcon - The minimalist Python WSGI framework - Metrics". falconframework.org. Retrieved 2015-09-16.
  5. ^ "TechEmpower Web Framework Performance Comparison". TechEmpower. Retrieved 2015-09-16.
  6. ^ "Benchmarking Go and Python Web servers". ziutek.github.io. Retrieved 2015-09-16.
  7. ^ "Express vs Flask vs Go vs Sparkjava vs Sinatra". Medium. Retrieved 2015-09-16.
  8. ^ "Falcon - Documentation". http://falcon.readthedocs.org/en/stable/. Retrieved 2015-09-16. {{cite web}}: External link in |website= (help)