[Twisted-Python] Twisted for http/2 (RESTful) webservices - client/server

Evilham contact at evilham.com
Mon May 27 03:16:54 MDT 2019


Hello,

On dv., maig 24 2019, Jayanth Acharya wrote:

> Thanks Meejah. Appreciate your clearing up that Flask is not 
> based on
> twisted, not sure I got that impression earlier.
> Checked Klein, and it seems quite promising (and seem quite 
> similar to
> Flask, from developer standpoint). From the documentation it was 
> not quite
> evident to me, as to how to use HTTP2 under Klein.
> I did find a reference to HTTP2 in this pull-request, but again 
> not clear
> to me: https://github.com/twisted/klein/pull/113
>
> Checked treq, but is it really advantageous over request ? Also 
> found no
> reference to HTTP2 in treq documents.
>
> Alao thanks for the references to Crossbar.io and Autobahn. Will 
> check them
> out shortly.


Just let me add something that may have been "obvious to everyone" 
on that PR and not to you at that point, but it will be "obvious" 
to you after the next 5-20 minutes:

Notice how that PR introduces the "endpoints" concept, that is a 
*very* useful concept in Twisted, which basically allows you to 
add support for pretty much any transport without any effort.

So, if you want to run an HTTP2 server, you need two things:

1. Read this bit of the klein and twisted documentation:
   https://klein.readthedocs.io/en/latest/examples/alternativerunning.html#example-ipv6-tls-unix-sockets-endpoints
   https://twistedmatrix.com/documents/current/core/howto/endpoints.html
2. Then you have to install the optional twisted[http2] dependency 
*and* because HTTP2 requires TLS, you have to enable that by using 
the endpoints API (e.g. in klein).

That's it for the server.

Twisted's documentation *could* be a bit better on this, if you 
want to take a go at it, I'm reasonably sure everyone would be 
happy.

The only mention I found for http2 on twisted docs is:
https://twistedmatrix.com/documents/current/installation/howto/optional.html?highlight=http2
There is also this article which AFAIK still applies, except the 
optional dependency is twisted[http2] instead of twisted[h2]:
https://pawelmhm.github.io/python/twisted/http2/python3/2016/07/30/twisted-http2.html

Notice that an easy one would be to edit the documentation I 
linked to before, and add an example that runs an HTTP2 server, 
future people like you will be able to find a small example with 
the search bar :-).
--
Evilham




More information about the Twisted-Python mailing list