问题标签 [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 回答
2799 浏览

python - 为 python twistd 应用程序编写 systemd 单元文件和规范文件

我给了一个任务来为 python twistd 应用程序编写 systemd 单元文件并创建它的 rpm。该应用程序是开源的,您可以在此处找到它。

我已将单元文件编写为:

我已将 rpmbuild 规范文件编写为:

我知道应用程序不使用 setuptools 有点奇怪。

他们还有一个init.d 脚本和一个使用它的cron 作业。您可以使用链接找到它们。

它们可以安全移除吗?如果是,如何?

我做得好吗?我怎样才能让它变得更好?任何指针和建议将不胜感激。

0 投票
1 回答
807 浏览

python - Twisted Python - twistd - 如何删除旧的日志文件

twistd用来运行我的应用程序,并阅读了如何自定义记录器。但是,我似乎无法弄清楚如何获取默认记录器(-l选项,使用顺序整数进行扩展)或DailyLogFile限制旋转日志的数量。理想情况下,我希望旋转的日志文件具有“%Y-%m-%d”格式的日期扩展名,并且一次限制为 7 个。

我尝试logrotate在我的系统上使用,但我发现它在执行copytruncate.

编辑:我相信二进制数据的原因可能类似于这个答案

0 投票
1 回答
1060 浏览

python - Python - 扭曲的客户端 - dataRecived 方法中的最大数据大小

我最近一直在使用和学习扭曲来创建 TCP 客户端套接字。

我得到了类的dataRecived方法Protocol,将所有数据一起返回。这意味着所有数据相互ConCat,最后从服务器返回一个长字节数据。

代码:

所以现在我的问题是:

  1. dataRecived方法有数据的最大大小吗?或者它的大小是无限的?

  2. 如果它有最大尺寸,那是什么?我怎样才能覆盖它?

注意:我使用的是 Ubuntu 14.04、Python v3.4 和 Twisted v15.3.0。

0 投票
1 回答
475 浏览

python - 我可以在 tac 配置文件中设置twistd pid 文件名吗?

我可以.pid通过提供 --pidfile=选项来twistd设置文件的文件名。有没有办法可以在.tac文件中指定它?

语境:

我的扭曲服务是一个玩游戏的机器人,它接受多个参数,比如他的名字、技能水平等。我正在.tac为每个机器人创建一个文件(多个机器人可以同时运行),这样每个特定的机器人总是有相同的参数,我可以启动它twisted -y botname.tac

我希望 pid 文件具有以下形式<bot_nick>.pid,以便不同的机器人不使用相同的 pid 文件,而且我可以通过列出 pid 文件来查看两者都在运行。有没有办法可以在.tac文件本身中设置它,或者我是否必须始终在 twistd 命令行选项中手动指定它twistd -y bot1.tac --pidfile=bot1.pid

0 投票
1 回答
516 浏览

python - 扭曲的脚本问题

根据 StackOverflow 上其他地方提供的示例(我不记得在哪里),我编写了一个在应用程序部署期间部署的 Twistedbin文件,该项目可以在此处找到/usr/binAxiom

我的问题是,在此python setup.py install过程中,安装的 bin 文件与 Axiom 包中的不同:

/usr/bin/公理

/usr/bin/myapp

而后者在从 bash shell 调用时不起作用:myapp start

我收到以下错误:unknow command myapp

如果我使用python setup.py develop而不是python setup.py install一切顺利。


我已经设置了一个在端口 1234 上启动 tcp 服务的小测试应用程序:

  • 命令twistd finger 有效,服务启动
  • 该命令fingerize start(故意使用不同的名称,以确保不会调用错误的名称)不起作用

这是代码:

装箱/手指

扭曲/插件/finger_plugin.py

手指/plugins.py

手指/点击.py

安装程序.py

当我打电话时,fingerize start我得到:(/code/test/bin/fingerize: Unknown command: finger测试是一个虚拟环境)

0 投票
1 回答
716 浏览

python - 扭曲的插件错误

A 创建了一个非常简单的扭曲应用程序,它启动 TCP 协议并回显您在 STDIN 中键入的内容。

我现在正在尝试创建一个twistd能够以这种方式运行我的应用程序的插件:echo start或者twistd -n echo

当运行twistd -n echo一切按预期工作时,使用echo start命令时出现错误:/home/vagrant/.env/bld/bin/echo: Unknown command: echo

这是我的代码:

回声/插件.py

回声/协议.py

回声/点击.py

扭曲/插件/echo_plugin.py

安装程序.py

这是我的 virtualenv 设置:

我在命令前加上_ep__bld_因为我不确定在通过 twistd 调用程序或直接调用 entry_point 时调用了哪个命令,但我尝试了任何可能的组合但没有成功......

当我跑步时,_ep_echo start我得到:

如果我替换_bld_echo_ep_echo.

查看输出时有一件事很奇怪:twistd 没有echo注册子命令。

如果我跑步,twistd --help我会得到:

在那里你可以看到echo注册的命令。

这让我发疯,关于这里有什么问题的任何想法?

请注意,我运行python setup.py install而不是python setup.py develop,后一个命令有效,但我不想在生产中运行它


编辑

好的,在搜索了为什么axiomatic start有效而不是我的原因后echo start,我通过从安装中删除所有不需要的代码以及我发现的找到了原因(我不声称这是解决方案,我很想听听@glyph 对此的回答)

AxiomEcho之间的主要区别在于setup.py

packages=find_packages() + ['twisted.plugins']

我没有+ ['twisted.plugins']添加到packages line,现在它可以工作了,但仍然发生此错误:

该插件有效,但我真的很想知道为什么我原来的安装方式不起作用...

0 投票
1 回答
133 浏览

python - twistd 和 nohup &: 有什么区别?

与 nohup 相比,使用 twistd 有什么优势?

为什么做

当我可以做的时候:

?

我问这个是因为我在使用 twistd 时遇到了困难,请在此处查看我的问题

0 投票
0 回答
203 浏览

python-2.7 - Python标准记录器而不是twistd记录器

我正在尝试守护一个使用 Python2.7 标准库记录器的简单 Twisted 应用程序。

这是设置:

Python 应用程序文件(run.py):

Twistd 应用程序文件(daemon.tac):

日志观察器文件(daemonlog.py):

启动应用程序:

一切正常,日志消息被正确归档和显示(根据记录器配置)。

尝试使用以下方式进行守护进程:

守护程序启动正常,我可以看到创建的 twistd.pid 文件(具有正确的 pid 号),在 ps -ef 命令结果中运行的守护程序,但我看不到任何日志文件(twistd.log 或日志文件由应用程序在没有扭曲的情况下正常启动时创建的)。

最后,我只想使用 Python 的标准库记录器和一种“绕过”twistd 记录器。

我可能遗漏了一些东西或误解,任何帮助将不胜感激。

0 投票
1 回答
188 浏览

python - Twistd - 使用带有选项的 service.Application 来允许参数解析

我想将我的服务器作为应用程序运行。为此,我有一个MyServer(name, port, host, testMode=False)类(继承自DatagramProtocol对象)。

在另一个文件中,我创建了一些命令来创建和启动我的服务器。或多或少,它看起来像:

values name, porthost我从数据库中读取。我启动我的服务器'twistd -y my_server_run.py',一切运行完美。

但是,我希望能够以模式启动我的服务器:测试模式和标准模式。因此,我想将从命令行读取的参数作为参数传递给我的对象。我找到了无法将它们解析为 sys.argv 的信息,但我必须实现usage.Options,所以我按照以下方式进行了操作:

然后,我将服务器运行为:

但是,我收到错误:

我无法找出我做错了什么。任何建议都会非常有帮助。

0 投票
0 回答
48 浏览

python - Twisted 插件需要快速失败的端口被占用

我有一个扭曲的插件,它监听一个端口并做非常简单的事情。问题是当我启动它时,如果帖子不可用,它只是坐在那里,进程正在运行,但什么也不做。在这种情况下,我需要该进程立即退出,以便更大的系统可以注意到并处理该问题

我有这样的代码:

这导致:

它继续运行,什么都不做......

service._raiseSynchronously = True在 return 正上方添加一行可以工作,但似乎没有记录并且感觉很脏。

有批准的方法来做到这一点吗?