6

I'm trying Pypy because it shows impressive benchmarks over CPython. Also, I'm mostly using the Twisted library in my code. I can now run a benchmark script which uses the Twisted reactor so I guess my setup is good. However, I do not know how to run the Twisted daemonizer (twistd) using Pypy.

1 Answer 1

6

You can either do it explicitly at run-time:

~$ /usr/bin/pypy /usr/bin/twistd ... 

This works because it specifically starts PyPy and tells it to start interpreting the twistd script.

Or you can do it persistently at install-time:

~/Twisted-11.0.0$ /usr/bin/pypy setup.py install 

This works because distutils (what setup.py uses) rewrites the #! line of each script it installs to point to the interpreter used to do the installation. So #!/usr/bin/env python in the installation source becomes #!/usr/bin/pypy in the installed copy.

Sign up to request clarification or add additional context in comments.

3 Comments

~$ /usr/bin/pypy /usr/bin/twistd ... This only worked when I installed setuptools using pypy. If not, the pkg_resources module in twistd can not be found.
~/Twisted-11.0.0$ /usr/bin/pypy setup.py install On Debian testing, this ended with a "Too many open files" error when the .egg was being extracted/installed. I had to use a higher open files limit using ulimit.
The "Too many open files" issue is documented here bugs.pypy.org/issue878 and is due to the way setuptools deals with files. Because pypy does not do reference counting GC, it might not GC/close files until much later. This is pretty bad, as it might happen when installing twisted alone, or as a dependency in pip - especially when it's a dependency of something else, it breaks everything.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.