Using Pre-existing WPS or Building Them
There is a whole description/tutorial on web processing services (WPS) found here. Most of this is going to be done using HTTP requests sent to a server like GeoServer that is hosting this process. The GeoServer link will outline the general process of hosting and calling a WPS using their software. GeoServer's WPS extension comes with JTS Topology Suite processes, which is a library of a common spatial functions such as buffering and intersection operations. Here is their example on executing a buffer operation using the JTS library.
There are other ways to do it though. Our web team uses queries against their PostGRE/PostGIS database to do simple analysis, but I am not familiar with that fully.
I think you should be able to break down features into a GeoJSON string to pass as a parameter into the python scripts. From there, you would need to convert that result back into a GeoJSON string to pass back to the client to display. Python packages such as Shapely can interpret a GeoJSON string. Others might need some work-around written up to utilize GeoJSON, or there may be a better option I haven't thought about using.
Another option would be to use GeoTools to write up a Java web application that would do spatial analysis. This also supports GeoJSON strings and has some built in spatial analysis functions. They have some screenshots showing their various applications.
It is doable to create your own WPS or run a server-side script. It won't be as easy as ESRI makes it, but it would be free if you're using open-source.
Whatever route you decide, update it here since it is a great topic!