Intro to Python Frameworks Part 2 – Full-Stack vs. Micro Framework

As we discussed in Part 1 of this two-part article series, there are many Python frameworks. Python.org breaks them down into three formats: full-stack, less than full-stack, and micro-stack. Today we are going to make it simple and separate them into full-stack and micro-stack. You’ll get an overview of some of the top frameworks in each category, the features that make them unique, and the reasons you should put them to work in your next application. First, let’s examine full-stack followed by micro-stack.

Full-Stack

Full-stack frameworks do the heavy lifting of creating Python applications. Unlike the misty dawn of computer languages a few decades ago, today developers can tap the power of frameworks to provide them with libraries, templating engines, and database management. Here are some of the most popular full-stack frameworks:

Django

Django is a high-level framework that makes it simple to create Web applications rapidly and with minimal code. It stresses pragmatic design and high performance. Django sticks closely to the don’t repeat yourself (DRY) principle and emphasizes automation.

Django has an approach that is sometimes called “batteries included,” which means it has everything developers need to dive in and begin building right away. It has the components for routing, forms, templating, database administration, authentication and more. Companies using Django include Pinterest, Instagram, and SportUp.

TurboGears

The philosophy behind TurboGears is to mash together some of the best components available. Rather than reinventing the wheel, it uses SQLAlchemy, Repose, Genshi and Tosca Widget to build applications. With these powerful components, you can create database-driven applications very quickly. TurboGears includes robust templates, Ajax for the server and browser, and a powerful object-relational mapper (ORM). TurboGears was the framework of choice for sites like SourceForge, Bisque and ShowMeDo.

Web2py

With web2py, all development, testing and database administration can be handled through the Web interface, although it is optional. Web2py has no configuration files, and no installation is necessary. There is a built-in ticketing system, caching system, and internalization engine.

Web2py works with multiple databases including MySQL, Oracle, and SQLite. You get libraries that handle JSON, CSV, RSS, AJAX, HTML/XML and more. There is a strong concentration on backward compatibility, and web2py can handle the uploading and downloading of huge files. Sites using web2py include PikHotel, Braga TV, Formatics and Tech Fuel.

Zope2

Zope2 is one of the “old men” of the Python Web framework world. The original, Zope 1, came out in 1999. Zope2 has a split personality: it is a Web framework and an application server. The next iteration of the framework, Zope 3, can function as a standalone framework, and has many related libraries, also found in recent versions of Zope 2. Every version of Zope features ZODB, a Python object database. Companies using Zope2 include Panda Express, The Drug Company, and Technologijos.

Grok

Grok is based on Zope Toolkit. An open-source framework, it was formed in 2006 by several Zope programmers. It has technologies such as grokcore.component and Martian that are also used by other projects in the Zope family. The philosophy behind Grok is to speed up application development while making the Zope technology base easier to use for new developers. Instead of using an explicit XML language, Grok has opted for a convention-over-configuration approach. Grok has a similar user interface to other full-stack frameworks such as TurboGears and Pylons.

Micro-Frameworks

Micro-frameworks are small, easy to understand and easy to use. They are terse and have simple documentation. URL routing is often RESTful. Micro-frameworks use WSGI and work through HTTP request/response. They are a good choice for small applications, or as part of a larger project. Here are five of the top Python micro-frameworks:

Flask

Flask comes with a built-in development server and support for unit testing. It is built on Werkzeug and Jinja2 and is Unicode-enabled. Its strengths include the following:

Companies using Flask include Papyrus Research, Punchfork, and Nuxeo.

Bottle

Bottle is a simple Python micro-framework intended for small applications. It has request dispatching with URL support, a built-in HTTP server, key/value databases and templates, and can easily adapt to many third-party template engines. It comes in a single file and, other than the standard library that comes with Python; it has no dependencies. Its features include the following:

Applications written using Bottle include Wikitests.

CherryPy

CherryPy was created to make it easy to develop Web applications quickly by wrapping the HTTP protocol. It can function as a Web server on its own, or it can be launched through any environment compatible with WSGI. It does not handle templating or access to the backend. It can be extended with filters used in request/response processing.

CherryPy uses some JavaScript libraries including Pyjamas, jQuery, and Sarissa. Its strengths include the following:

Despite these advantages, some programmers feel the documentation needs improvement, and the framework could be easier to use. Websites using CherryPy include Netflix, Urbanility, and Indigo.

Bobo

Bobo is a very lightweight framework created to develop Web applications that adhere to WSGI. From the beginning, the philosophy behind the development of the framework was that it should be easy to use and fun. Two main features are the ability to map URLs to objects and to call objects to get HTTP response.

As a micro framework, it was built to be lean and mean. It does not have a database integration layer, a templating engine or similar features provided by larger frameworks. Bobo’s strengths include low coupling and easy configuration. Bobo essentially has one task: to send a request to a Python object, gather some data and send a response. There is no integration with the database at any time.

Web.py

Web.py is a very simple and clean Web framework and library that was developed to create Python Web applications. Other frameworks have more complexity while the thinking behind web.py is that it is better to keep things simple. Although it is a young framework in the early stages of development, it can create powerful applications rapidly.

Web.py was developed by Aaron Swartz in 2006, and he continues to guide and support web.py among other initiatives. It was initially used by Reddit when Aaron Swartz worked there. Web.py also powers Yandex, the largest Russian search engine, and local.ch, a telephone directory in Switzerland.

Web.py’s advantages include the following:

One of its disadvantages is its documentation, which can be improved.

Evolution of Python Frameworks

Most of these frameworks are designed to work with technology on the server. However, as Web frameworks evolve, some are starting to use Ajax code that is better suited for handling programming on the client side. In fact, we are beginning to see the emergence of complete applications operating in the browser. The benefit of these frameworks is that developers can concentrate on building the application itself while the framework takes on the tasks of infrastructure, communications, and other chores. The framework will interpret requests, create responses, and store data on a persistent basis.

Full Stack vs. Micro

We have made a distinction between full-stack frameworks and micro frameworks. The separation between the two is that full-stack frameworks have all of the tools you need to create an application from the user interface all the way back to the database. In contrast, micro-frameworks are better suited to small applications. However, many developers report they feel restricted by full-stack frameworks and prefer the flexibility of piecing together several micro-stack frameworks.

Rapid Development

The key then is to examine each of these frameworks and determine which fits the goal of your project as well as the working style of the programmers involved. First consider a full-stack solution, because all of the components you need are right in the framework environment itself. If you have a smaller application, however, it may be better to concentrate on a micro-stack framework. These smaller frameworks are perfect for anything that does not need much code. Simple applications and small programs do not need the infrastructure of a great, full-stack development environment.

End of the Two-Part Series

This is the end of the second article in our two-part series on Python full-stack and micro-stack frameworks. Beyond the practical applications, each framework has its personality. Whether the framework has excellent documentation or not, the look and feel of the framework itself and other factors all come into play when deciding if you can work with this program through an entire project. That is a decision only you can make. Take your time to make a wise one.

Related Articles

What the North Pole Can Teach Us About Digital Resilience
Observability
3 Minute Read

What the North Pole Can Teach Us About Digital Resilience

Discover North Pole lessons for digital resilience. Prioritise operations, just like the reliable Santa Tracker, for guaranteed outcomes. Explore our dashboards for deeper insights!
The Next Step in your Metric Data Optimization Starts Now
Observability
6 Minute Read

The Next Step in your Metric Data Optimization Starts Now

We're excited to introduce Dimension Utilization, designed to tackle the often-hidden culprit of escalating costs and data bloat – high-cardinality dimensions.
How to Manage Planned Downtime the Right Way, with Synthetics
Observability
6 Minute Read

How to Manage Planned Downtime the Right Way, with Synthetics

Planned downtime management ensures clean synthetic tests and meaningful signals during environment changes. Manage downtime the right way, with synthetics.
Smart Alerting for Reliable Synthetics: Tune for Signal, Not Noise
Observability
7 Minute Read

Smart Alerting for Reliable Synthetics: Tune for Signal, Not Noise

Smart alerting is the way to get reliable signals from your synthetic tests. Learn how to set up and use smart alerts for better synthetic signaling.
How To Choose the Best Synthetic Test Locations
Observability
6 Minute Read

How To Choose the Best Synthetic Test Locations

Running all your synthetic tests from one region? Discover why location matters and how the right test regions reveal true customer experience.
Advanced Network Traffic Analysis with Splunk and Isovalent
Observability
6 Minute Read

Advanced Network Traffic Analysis with Splunk and Isovalent

Splunk and Isovalent are redefining network visibility with eBPF-powered insights.
Conquer Complexity, Accelerate Resolution with the AI Troubleshooting Agent in Splunk Observability Cloud
Observability
4 Minute Read

Conquer Complexity, Accelerate Resolution with the AI Troubleshooting Agent in Splunk Observability Cloud

Learn more about how AI Agents in Observability Cloud can help you and your teams troubleshoot, identify root cause, and remediate issues faster.
Instrument OpenTelemetry for Non-Kubernetes Environments in One Simple Step
Observability
2 Minute Read

Instrument OpenTelemetry for Non-Kubernetes Environments in One Simple Step

The OpenTelemetry Injector makes implementation incredibly easy and expands OpenTelemetry's reach and ease of use for organizations with diverse infrastructure.
Resolve Database Performance Issues Faster With Splunk Database Monitoring
Observability
3 Minute Read

Resolve Database Performance Issues Faster With Splunk Database Monitoring

Introducing Splunk Database Monitoring, which helps you identify and resolve slow, inefficient queries; correlate application issues to specific queries for faster root cause analysis; and accelerate fixes with AI-powered recommendations.