As someone working with the web stack and languages like Python or Ruby, there
are high chances that you have heard of Non Blocking I/O. You might as well be
using it with some of your projects or have tried your hands with libraries
like Gevent or Tornado. But how do these libraries make network requests non
blocking. This is something that I had always wondered when I tried Gevent. I
just couldn’t get my head around the fact that when you send something to a
socket or receive from it, it will block execution for the at least the amount
of time it takes to transmit the data. So how do I make it possible to execute
something else while I/O is happening? So I started digging in, trying to
understand how to make some network request non blocking in Python.
With this article series, I will try to introduce the topic and go in as much
detail as possible.
Incoming is a JSON validation framework for Python. Validation of payloads
sent over HTTP requests has always been a mess. A bunch of if-then-else
further branching into more if-then-else blocks is common and over time
becomes extremely difficult to manage. Since the use of JSON
for HTTP payload is a common practice, it only made sense to solve the
problem of payload validation for payloads in JSON format. Incoming is an opinionated
JSON validation framework which does not bind to any kind of web frameworks.
It just tries to make JSON validation sensible and logical by giving it
structure and making it possible to re-use validation code across your application.
This article is about the logging problem with Gevent’s WSGI
Server and how a simple hack can actually help you solve that problem
and make sure you continue to use Gevent for serving WSGI applications
(Flask in this article) without any compromises.
I wrote this article while I was doing my undergrad for students who I was
guiding while mentoring in Sytems and Network Programming lab course work. Every
lab course would have a semester end assignment (or what we would call semester
projects). Cloud Computing was one of the areas in which students could do their
projects. But without any understanding of the area, students would decide to
make their projects under Cloud Computing and end up doing things that were not
even closely related to the area. Unfortunately, there was not much help from
the faculty as well. This article was an attempt to explain the topic/area to
the students of the lab that I was assisting.