[SoC] Final report - Web administration and process management for PyWPS
rudolja1 at fit.cvut.cz
Mon Aug 22 03:24:51 PDT 2016
My work was focused on extending PyWPS with a way to control processes
and a web interface for it.
**The state of art before GSoC**
Before Google Summer of Code 2016, there was no way how to manipulate
running processes. There also wasn't any web interface for this purpose.
I didn't notice a way how to connect PyWPS with a web server.
There was a demo application, which was run by Flask's development
server. A PyWPS application has registered processes, which are Python
classes with predefined methods which implement desired behavior defined
by an author of a process. Users can run these processes by sending an
HTTP request to that server with parameters defined by the PyWPS library
and the process. An output of a process is an XML file with a result.
Before GSoC 2016 no one could control running processes and there wasn't
any user-friendly way to see what is running.
I moved Flask from the demo application to the library, therefore Flask
doesn't have to use his own development server as a production server,
which is not his purpose, and can be connected to real used web servers
like Apache and others. I demonstrated the usage of PyWPS with Apache
and PostgreSQL on Ubuntu in this article , which is a step-by-step
tutorial how to run it. I used this tutorial to create a page into the
documentation of PyWPS , the documentation page is purposely more
general and less detailed about the deployment on Apache.
On the shoulders of Flask framework, I've built the REST API for
manipulating processes and the web interface. The REST API is described
in the documentation . There are introduced URL's /processes and
/processes/<uuid> that are available to pause, resume and stop running
processes by different HTTP methods described in the documentation. A
user can also connect to the web interface to see running processes and
have the ability to control the processes through this web on the URL
I've switched a hard-wired database connection to SQLite and SQL queries
to the SQLAlchemy ORM. Therefore there is no SQL command in the code,
what is more clear, more maintainable and flexible. It's no more limited
only to SQLite, it can still be used with SQLite, but also with many
others like MySQL, PostgreSQL, Oracle and so on. I demonstrated usage
You can see all my commits on this link .
This repository , commits are there , was used as the supporting
application through the describe tutorial on Ubuntu deployment. Can be
used as the new demo application. It can be connected to Apache or run
local development server as a demo application run by the Python
I've already made one pull request , that is still opened. There are
some conflicts, there were none at the moment I've made it. I should
make another pull request soon.
I think, I've met the main goals of my work. I've created the REST API
for the manipulation of processes and also the web interface. I've also
tried to write a documentation description, which I found surprisingly
not easy. This last week and days I am focused on testing. I've run
tests with Python 2 and I hope I it will be fine with Python 3 until the
I would say proper testing by using and solving any issue that will come
up. Merging my last commits into the main repository.
I would like to thank my mentors Jachym Cepicky and Jonas Eberle for the
opportunity and support through GSoC.
Thanks, Jan Rudolf
An illustration of my contribution:
A screenshot of the web interface 1:
A screenshot of the web interface 2:
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the SoC