Scripting languages (VBScript, Python, PowerShell etc) are both flexible and convenient to create small scripts, to handle a simple monitoring task (such as poll a device for data or execute custom alert). Python has an advantage of being general purpose cross-platform scripting language for years, with many well-known scripts either already available on the Net, or quick to compose.
This post is a brief summary of a presentation I gave recently where I deploy Elastic App Search, show off the ease of setup, data indexing, and relevance tuning, and take look at a few of the many refined APIs. It’s also written up in a codelab with step-by-step instructions for building a movies search engine app using Python Flask. The app will work on desktop or mobile and is a fast, simple, and reliable way to query the information.
With the increasing popularity of Python web frameworks supporting asynchronous I/O like FastAPI, Starlette, and soon in Django 3.1, there has been a growing demand for native async I/O support in the Python Elasticsearch client. Async I/O is exciting because your application can use system resources efficiently compared to a traditional multi-threaded application, which leads to better performance on I/O-heavy workloads, like when serving a web application.
All programming languages provide efficient data structures that allow you to logically or mathematically organize and model your data. Most of us are familiar with simpler data structures like lists (or arrays) and dictionaries (or associative arrays), but these basic array-based data structures act more as generic solutions to your programming needs and aren’t really optimized for performance on custom implementations. There’s much more than programming languages bring to the table.
Web frameworks are powerful tools. They abstract the common aspects of building web sites and APIs and allow us to build richer, more stable applications with less effort. A broad range of web frameworks is available to us in Python. Some are proven favorites with large ecosystems and communities. Others excel in niche use cases or for specific kinds of development. Still, others are up-and-comers with compelling new reasons to be considered.
Our instrumentation uses built-in extension mechanisms where possible, such as Django’s database instrumentation. But often libraries have no such mechanisms, so we resort to wrapping third party libraries’ functions with our own decorators. For example, we instrument jinja2 ’s Template.render() function with a decorator to measure template rendering time. We value the correctness of our instrumentation a lot so that we do not affect our users’ applications.
This guide is focused on how to log in Python using the built-in support for logging. It introduces various concepts that are relevant to understanding Python logging, discusses the corresponding logging APIs in Python and how to use them, and presents best practices and performance considerations for using these APIs.