【发布时间】:2018-07-22 04:09:34
【问题描述】:
我正在尝试通过 Python 模块管理游戏服务器(供玩家加入的服务器,我没有创建游戏)。但是,我注意到,当 Python 脚本停止请求输入(来自 input())时,服务器停止了。有没有办法解决这个问题?
服务器作为子进程运行:
server = subprocess.Popen("D:\Windows\System32\cmd.exe", stdin=subprocess.PIPE, stdout=subprocess.PIPE) 后跟 server.stdin.write 调用以运行服务器 exe 文件
如果在没有标准输出管道的情况下运行,服务器似乎工作正常,但如果可能的话,我仍然需要从它接收输出而不停止它。 对于这个模糊的问题和我缺乏 Python 知识,我深表歉意。
【问题讨论】:
-
通常,您不希望服务器调用
input()。它应该从客户那里获得输入。如果您确实需要从运行服务器的用户那里获取输入,您可能希望将所有服务器内容移至后台线程,或者将sys.stdin置于非阻塞模式,这样您可以将其放入相同的selectors或asyncio或您用于服务器的任何循环中。 (甚至连你如何实现服务器的最模糊概念都没有,很难说比这更具体的了。) -
我应该更清楚。我没有创建游戏。我正在为 Steam 游戏启动专用服务器,我想尝试让 Discord 服务器中的用户通过 discord 命令将输入发送到服务器的标准输入。我的问题是当 python 脚本运行时游戏服务器停止(等待输入)。
标签: python python-3.7