Cherrypy Introduction: Simple Python Library for Quick Application Development

Written by vaibhavtyagi | Published 2020/09/09
Tech Story Tags: python | python3 | libraries | github | http-web-servers | microservices | rest-api | backend

TLDR For day to day work in dev-ops or for testing team, we need to put stub in between some application to fill the gap for the application which are not present on local testing lab, for that we need some stub so that it can mimic like actual application. We will discuss one tool which eventually make tester and developer life very easy, The cherrypy library of python. I will write simplest code example to create HTTP server, which takes json payload in POST request and also send the json response in reply.via the TL;DR App

For day to day work in dev-ops or for testing team , we need to put stub in between some application to fill the gap for the application which are not present on local testing lab , for that we need to put some stub so that it can mimic like actual application .
We will discuss one tool here which eventually make tester and developer life very easy , The cherrypy library of python.
I will write simplest code example to create HTTP server , which takes json payload in POST request and also send the json response in reply.

Sample request

'http://127.0.0.1:9990/context' 
Payload  '{"tid": "11000098777","deviceid": "9000002020020202"}'

Response from server

{  RESULT : "ACCEPTED"}

Sample code for above requirement in python

Instillation steps
For installing cherrypy you need to use pip utility and can install cherrypy
pip install cherrypy
Server.py
import cherrypy
import os.path
import configparser
import json

class Server(object):
  def __init__(self):
        self.response_json_objectresponse_json_object=''
        with open('./response.json') as f:
            self.response_json_object = json.load(f)

    @cherrypy.expose()
    @cherrypy.tools.json_in()
    @cherrypy.tools.json_out()
    def context(self):
        return self.response_json_object

configfile=os.path.join(os.path.dirname(__file__),'./server.conf')
cherrypy.quickstart(Server(),'/', config=configfile)
  • Above program is using one config file named server.conf
  • Also it is reading one json file which will be send as json response for the incoming request.
server.conf
[global]
server.socket_host = '127.0.0.1'
server.socket_port = 9990
server.thread_pool=10
tools.staticdir.on = False
tools.staticdir.dir =
log.access_file = "./logs/access1.log"
log.error_file = "./logs/error1.log"
log.screen = False
tools.sessions.on = True

response.json
{  RESULT : "ACCEPTED"}
On Linux terminal you can use below command to run the program
Start the application
paython Server.py &
Test the application
curl -i -X POST -H "Content-Type:application/json" 'http://127.0.0.1:9990/context' --data '{"tid": "11000098777","deviceid": "9000002020020202"}'
{  RESULT : "ACCEPTED"}

Published by HackerNoon on 2020/09/09