使用Pypy运行twistd

6

我正在尝试使用Pypy,因为相较于CPython,它显示出卓越的基准测试。此外,我在我的代码中主要使用Twisted库。现在,我可以运行一个使用Twisted反应器的基准测试脚本,所以我想我的设置是好的。然而,我不知道如何使用Pypy运行Twisted守护进程(twistd)。

1个回答

6
你可以在运行时显式地执行此操作:
~$ /usr/bin/pypy /usr/bin/twistd ...

这是因为它专门启动PyPy并告诉它开始解释twistd脚本。或者您可以在安装时持续地执行此操作:
~/Twisted-11.0.0$ /usr/bin/pypy setup.py install

这是因为distutils(setup.py使用的工具)会重新编写每个安装脚本的#!行,指向用于进行安装的解释器。 因此,安装源代码中的#!/usr/bin/env python将变成已安装副本中的#!/usr/bin/pypy

1
只有在使用pypy安装setuptools时,以下命令才能正常工作:~$ /usr/bin/pypy /usr/bin/twistd ... 如果没有安装setuptools,则twistd中的pkg_resources模块将无法找到。 - esamson
1
~/Twisted-11.0.0$ /usr/bin/pypy setup.py install 在Debian测试版中,当正在提取/安装.egg文件时,出现了“打开文件太多”的错误。我不得不使用ulimit来提高打开文件的限制。 - esamson
“Too many open files”问题在这里有记录:https://bugs.pypy.org/issue878,是由于setuptools处理文件的方式导致的。因为pypy不进行引用计数GC,所以它可能不会在很久之后才GC/关闭文件。这非常糟糕,因为它可能会在仅安装twisted时发生,或者作为pip中的依赖项 - 特别是当它是其他某些东西的依赖项时,它会破坏一切。 - fiorix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接