- Python Microservices Development
- Tarek Ziadé
- 279字
- 2021-07-02 18:54:20
Twisted and Tornado
If you are building microservices where increasing the number of concurrent requests you can hold is important, it's tempting to drop the WSGI standard, and just use an asynchronous framework like Tornado (http://www.tornadoweb.org/) or Twisted (https://twistedmatrix.com/trac/).
Twisted has been around for ages. To implement the same microservices, you need to write a slightly more verbose code like this:
import time
import json
from twisted.web import server, resource
from twisted.internet import reactor, endpoints
class Simple(resource.Resource):
isLeaf = True
def render_GET(self, request):
request.responseHeaders.addRawHeader(b"content-type",
b"application/json")
return bytes(json.dumps({'time': time.time()}), 'utf8')
site = server.Site(Simple())
endpoint = endpoints.TCP4ServerEndpoint(reactor, 8080)
endpoint.listen(site)
reactor.run()
While Twisted is an extremely robust and efficient framework, it suffers from a few problems when building HTTP microservices, which are as follows:
- You need to implement each endpoint in your microservice with a class derived from a Resource class, and that implements each supported method. For a few simple APIs, it adds a lot of boilerplate code.
- Twisted code can be hard to understand and debug due to its asynchronous nature.
- It's easy to fall into callback hell when you chain too many functions that get triggered successively one after the other--and the code can get messy.
- Properly testing your Twisted application is hard, and you have to use a Twisted-specific unit testing model.
Tornado is based on a similar model, but does a better job in some areas. It has a lighter routing system, and does everything possible to make the code closer to plain Python. Tornado also uses a callback model, so debugging can be hard.
But both frameworks are working hard at bridging the gap to rely on the new async features introduced in Python 3.
- 零基礎學C++程序設計
- UML+OOPC嵌入式C語言開發精講
- C語言從入門到精通
- Go語言精進之路:從新手到高手的編程思想、方法和技巧(2)
- Microsoft Dynamics AX 2012 R3 Financial Management
- OpenCV 3 Blueprints
- 區塊鏈國產化實踐指南:基于Fabric 2.0
- 深入解析Java編譯器:源碼剖析與實例詳解
- Unity 5.X從入門到精通
- 軟件測試分析與實踐
- Mastering ASP.NET Core 2.0
- Get Your Hands Dirty on Clean Architecture
- DevOps 精要:業務視角
- PHP動態網站開發實踐教程
- Ajax與jQuery程序設計