thrift-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dave Engberg <dengb...@evernote.com>
Subject Re: Python server over HTTP, HTTPS -- How?
Date Fri, 03 Apr 2009 02:55:06 GMT

Hey, Brian -

I'm basically in charge of our API stuff (wrote the IDL, docs, service 
implementation, etc.), and would be happy to chime in on any questions 
you have.


Brian Hammond wrote:
> I'm assuming EverNote is running the PHP generated "server" since 
> their staging/testing web service box is running Apache.
Our service implementation is Java on Tomcat, but some of our static web 
pages run out of a PHP server for historic reasons.  All of the Thrift 
goes through a single Java Servlet.  Originally, this servlet was pretty 
small, and we could have given out the source, but now it's all munged 
up with code for logging, throttling, etc.

The HTTP service basically needs to take the binary contents of the HTTP 
POST and then hand them over to the server skeleton for processing, and 
then marshal the results back into the binary reply.  To correctly 
implement HTTP for portability, you need to buffer the reply so you can 
give back a Content-Length header.

The basic implementation is really simple if you're running on a decent 
HTTP server, but you will need to add a decent amount of exception 
handling to deal with all of the mess you get from Internet connectivity 
if you're opening this up to the world.


> 1) use SSL to encrypt user credentials
By using HTTP, we basically got HTTPS for free ... we offload it to our 
Citrix load balancers, in fact, so our app servers just handle HTTP.



Mime
View raw message