问题标签 [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.
python - Python - 扭曲的客户端 - dataRecived 方法中的最大数据大小
我最近一直在使用和学习扭曲来创建 TCP 客户端套接字。
我得到了类的dataRecived
方法Protocol
,将所有数据一起返回。这意味着所有数据相互ConCat,最后从服务器返回一个长字节数据。
代码:
所以现在我的问题是:
dataRecived
方法有数据的最大大小吗?或者它的大小是无限的?如果它有最大尺寸,那是什么?我怎样才能覆盖它?
注意:我使用的是 Ubuntu 14.04、Python v3.4 和 Twisted v15.3.0。
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
?
python - 扭曲的脚本问题
根据 StackOverflow 上其他地方提供的示例(我不记得在哪里),我编写了一个在应用程序部署期间部署的 Twistedbin
文件,该项目可以在此处找到。/usr/bin
Axiom
我的问题是,在此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
测试是一个虚拟环境)
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 对此的回答)
Axiom和Echo之间的主要区别在于setup.py
:
packages=find_packages() + ['twisted.plugins']
我没有+ ['twisted.plugins']
添加到packages line
,现在它可以工作了,但仍然发生此错误:
该插件有效,但我真的很想知道为什么我原来的安装方式不起作用...
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 记录器。
我可能遗漏了一些东西或误解,任何帮助将不胜感激。
python - Twistd - 使用带有选项的 service.Application 来允许参数解析
我想将我的服务器作为应用程序运行。为此,我有一个MyServer(name, port, host, testMode=False)
类(继承自DatagramProtocol
对象)。
在另一个文件中,我创建了一些命令来创建和启动我的服务器。或多或少,它看起来像:
values name, port
,host
我从数据库中读取。我启动我的服务器'twistd -y my_server_run.py'
,一切运行完美。
但是,我希望能够以模式启动我的服务器:测试模式和标准模式。因此,我想将从命令行读取的参数作为参数传递给我的对象。我找到了无法将它们解析为 sys.argv 的信息,但我必须实现usage.Options
,所以我按照以下方式进行了操作:
然后,我将服务器运行为:
但是,我收到错误:
我无法找出我做错了什么。任何建议都会非常有帮助。
python - Twisted 插件需要快速失败的端口被占用
我有一个扭曲的插件,它监听一个端口并做非常简单的事情。问题是当我启动它时,如果帖子不可用,它只是坐在那里,进程正在运行,但什么也不做。在这种情况下,我需要该进程立即退出,以便更大的系统可以注意到并处理该问题
我有这样的代码:
这导致:
它继续运行,什么都不做......
service._raiseSynchronously = True
在 return 正上方添加一行可以工作,但似乎没有记录并且感觉很脏。
有批准的方法来做到这一点吗?