The Basics

circuits.web is not a full stack web framework, rather it is more closely aligned with CherryPy and offers enough functionality to make quickly developing web applications easy and as flexible as possible. circuits.web does not provide features such as:

  • builtin Templating
  • builtin Database or ORM tools
  • etc

The functionality that circutis.web does provide ensures that circuits.web is fully HTTP/1.1 and WSGI/1.0 compliant and offers all the essential tools you need to build your web application or website.

A Stand Alone Server

A stand alone server consist of the components shown in section Getting Started. The process of handling an HTTP request starts with the TCPServer receiving a chunk of bytes. It emits those bytes as a Read event on the channel shared by the Server, HTTP, TCPServer and Dispatcher components (“web” by default).

The Read events are handled by the HTTP component. It collects the chunks until a complete HTTP request has been received. The request is then emitted as a Request event with an instance of classes Request and Response each as arguments. To complete the client’s request, a Response event must be fired. This is usually done by the HTTP component itself upon the receipt of a RequestSuccess event (automatically generated after all handlers for the Request event have been invoked successfully). In case of a problem, the Request event’s handlers should fire or return a HTTPError which is instead converted by the HTTP component to a Response event.

HTTP’s handler for the Response event retrieves the response information from the event and encodes it as required by HTTP (the protocol). It then fires one or more Write events which are handled by the TCPServer (and the response is thus sent to the client). More details can be found in circuits.web.http – HTTP Protocol.

A commonly used component for handling Request events is a dispatcher. [To be continued]