Can PyPy be used for web application deployment ?

What is PyPy ?

  • PyPy is an implementation of Python in Python which uses JIT(Just In Time) translation.

Why to Use PyPy?

  • According to benchmarks “It depends greatly on the type of task being performed. The geometric average of all benchmarks is 0.18 or 5.6 times faster than CPython”.

Experience?

I have used PyPy for sandboxing for my project pylive, tested flask with pypy, ported brubeck to work on pypy, tested lastuser in PyPy 2.0beta1. In the experiment pypy-sandbox, requests, flask, werkzeug, jinja2, SQLAlchemy(postgres + sqlite), cython, greenlet, eventlet, markdown, gunicorn, dictshield, json, zmq was tested.

If the library depends on C extensions more likely it needs rewrite using cffi. Here is the bummer, so you can’t use your requirements.txt to directly deploy with PyPy. For an example: pyzmq library is written in C. So you can’t run in PyPy, so one needs to use zmqpy, pyzmq.

Benchmarks

Benchmark of brubeck after porting shows PyPy din’t boost performance. This could be due to following reasons.

  1. gevent doesn’t run on PyPy yet. :-(

  2. zmq library blocks, eventlet support for zmq is buggy.

  3. ujson vs PyPy in built json performance.

Does any one use PyPy in production

  1. Quora runs on pypy but no updates recently.

  2. Twisted site run on PyPy.

  3. There is a scientfic telescope project that runs on pypy(couldn’t locate the link).

My take

  1. Postgres driver runs without any issues, happy for that.

  2. Waiting for gevent to support, after that there will be significant progress in speed of brubeck and adoption.

  3. All my personal projects will be tested against pypy. Yes hopes are becoming true.

See also

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.