问题标签 [twistd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
505 浏览

python - twistd 插件和 twistd 服务有什么区别?

显然,您可以创建使用 Twisted 的 twistd 以两种不同方式运行的服务。一方面,您可以使用Twisted Application Infrastructure创建服务,另一方面您可以使用Twisted Plugin System创建服务。似乎除了在命令行上启动应用程序的方式以及编写实际服务的方式存在一些差异之外,它们是完成同一件事的两种方式吗?

0 投票
1 回答
517 浏览

python - 扭曲的插件日志记录

我正在创建一个扭曲的插件。这里有关于如何控制 .tac 文件中扭曲应用程序的日志记录的文档。但是,没有用于控制插件日志记录的类似文档。

由于插件不创建 Application() 对象,我们如何控制/自定义发生的日志记录?

(这里的邮件列表上提出了一个几乎相同的问题,但似乎没有得到答案)

0 投票
1 回答
2638 浏览

twisted - 使用 Pypy 扭曲运行

我正在尝试 Pypy,因为它显示了优于 CPython 的令人印象深刻的基准。此外,我主要在我的代码中使用 Twisted 库。我现在可以运行一个使用 Twisted reactor 的基准脚本,所以我想我的设置很好。但是,我不知道如何使用 Pypy 运行 Twisted 守护程序(twistd)。

0 投票
1 回答
563 浏览

twisted - 运行使用 twistd 守护的基于非 Twisted 的 Python 脚本

我正在编写一个由服务器(使用 Twisted)和客户端(没有 Twisted)组成的 Python 程序

服务器部分是使用 Twisted 和 Twisted 的应用程序框架实现的,并使用 Twistd 启动以进行守护。

在不同服务器上运行的客户端是一个简单的 Python 脚本,没有任何 Twisted 内容(也没有特定于应用程序框架的内容)。它也应该作为守护进程运行。仅供参考,这是来源:

现在我想知道我是否也可以使用 Twistd 来守护客户端?因此,我会从客户端创建一个 Twisted-Application。但是我看到的所有关于 Twisted 应用程序的示例都实现了一些 Twisted 互联网服务器的东西(比如在我的情况下是 internet.UDPServer ...),我的客户不使用这些东西。

那么是否可以使用 Twistd 将我的客户端作为守护进程启动,我必须进行哪些更改?我应该重写客户端以充分利用 Twisted 吗?如果是,是否有任何类似的示例如何编写基于 Twisted 的网络客户端?

还是我必须为客户端使用不同的守护程序库?有一个很好的库,但我试图保持一致并为客户端和服务器使用相同的守护进程机制。

0 投票
1 回答
1923 浏览

python - Twisted:禁用 Twisted 框架类的日志记录

我的基于 Twisted 的客户端循环发送 UDP 数据包。因此,我使用的是 DatagramProtocol 类。这是来源:

现在,当我使用 twistd 运行这个客户端时,我会从 Twisted 类(即 DatagramProtocol 类)中永久获取日志消息:

由于这些日志消息正在污染我的“自己的”日志,我想知道是否可以禁用这些日志消息。如您所见,我已经通过调用减少了日志数量protocol.noisy = False,但我仍然收到其他日志消息。该命令g = protocol.ClientFactory().noisy = False也无济于事。

是否可以以通用方式禁用所有 Twisted 内部类的日志记录 - 对于所有模块?也许通过使用一些 Twisted-logging 配置?

0 投票
1 回答
710 浏览

python - 检查使用 twistd 启动的 Twisted Server 是否成功启动

我需要一种可靠的方法来检查通过 twistd(和 TAC 文件)启动的基于 Twisted 的服务器是否成功启动。它可能会失败,因为某些网络选项设置错误。由于我无法访问twistd日志(因为它已记录到/dev/null,因为我不需要twistd产生的日志混乱),我需要确定服务器是否在包装的启动脚本中成功启动扭曲的呼叫。

启动脚本是这样的 Bash 脚本:

我在网上找到的只是一些使用 ps 或类似东西的黑客。但我不喜欢这样的方法,因为我认为它不可靠。

所以我在考虑是否有一种方法可以访问 Twisted 的内部,并获取所有当前正在运行的 Twisted 应用程序?这样我就可以查询当前正在运行的应用程序以获取我的 Twisted 应用程序的名称(正如我在 TAC 文件中命名的那样)以启动。

我也在考虑不使用twistd可执行文件,而是实现一个包含twistd内容的基于Python的启动脚本,就像这个问题的答案提供的那样,但我不知道这是否有助于我获得状态服务器运行。

所以我的问题只是:当twistd-logging被禁用时,是否有一种可靠的不丑陋的方法来判断一个以twistd启动的Twisted服务器是否成功启动?

0 投票
2 回答
516 浏览

python - 使用twistd但适用于python时,twisted app.py“应用程序”错误中的堆栈转储?

我正在尝试使用twisted,但是当我尝试运行twisted包提供的一些示例代码时,当我使用“twistd”而不是“python”时,它似乎总是崩溃

例如,使用给定的示例代码,如果我运行命令:twisted -ny echoserv.py

我使用的是 Twisted 版本 11.0.0 但后来我尝试了 12.0.0 但我遇到了同样的问题。

我使用的python版本是2.7.2

关于做什么的任何想法都会有所帮助。几天来,我一直在尝试处理这个问题。谢谢!

0 投票
1 回答
171 浏览

python - Twistd 套接字所有权

我有一个守护进程,它监听/var/run. 我使用 init 脚本(显然是 root)启动守护进程,并且我正在使用twistd --uidand--gid选项将权限授予非特权用户。但是,该套接字仍归root:root.

第二个守护进程,作为同一个非特权用户运行,需要访问套接字。我现在将套接字所有权更改为daemon:daemoninit 脚本,但这并没有让我觉得这是一个非常优雅的解决方案。

daemon:daemon有没有办法让文件中拥有的套接字tac

0 投票
1 回答
1268 浏览

python - 使用 pyinstaller 打包一个 twistd 插件

我创建了一个不错的 python Twisted 应用程序,带有一个用于 twistd runner 的插件,如 Twisted 文档中所述:http: //twistedmatrix.com/documents/current/core/howto/tap.html。我在使用 PyInstaller 打包时遇到问题:在执行冻结的应用程序期间找不到我的 twistd 插件。

为了发布我的项目,我使用 twistd runner 模块创建了自己的顶级启动脚本,例如

接下来,我使用 PyInstaller 将其冻结为单目录部署。执行上面的冻结脚本失败,因为它找不到我的 twistd 插件(为简洁而编辑):

通常,Twistd 检查 Python 系统路径以在 twisted/plugins/myapp_plugin.py 中发现我的插件。如果我在启动脚本中打印扭曲插件列表,则该列表在 PyInstaller 生成的可执行文件中为空,例如

我使用了一个有点默认的 PyInstaller 规范文件,没有指定隐藏的导入或导入钩子。

我喜欢带日志记录、pid 文件等的twistd 功能,所以我想避免完全放弃twistd runner 来规避插件问题。有没有办法确保在冻结的可执行文件中找到我的 twistd 插件?

0 投票
1 回答
666 浏览

python - 使用 twistd 运行高速公路应用程序

我在 Twisted 上使用 autobahn lib 开发了一个 websocket 服务器。现在我想用 twistd 将它作为守护进程运行。如果是简单的 TCP 服务器,我会这样做:

在该示例中,我使用 TCPServer 类而不是 reactor.listenTCP 函数。

在高速公路 api 参考中,我发现只有 listenWS 函数(如 TCP 服务器的 listenTCP),而没有关于 WSServer 类的内容。

所以我的问题是如何让我的应用程序与 twistd 一起工作?也许我应该实现我自己的服务 WSServer 类来扩展扭曲的服务类?