运行 python HttpServer 在 运行 iOS 项目之前 Xcode
Run a python HttpServer before run a iOS project in Xcode
我正在尝试在 运行 一个 iOS 项目之前 运行 一个 http 服务器。我在 Run Script
中添加了脚本 python -m SimpleHTTPServer 9527
。
当我在终端中 运行 时就可以了,
但是当我点击 Xcode 中的 Run
按钮时,它停止了,就像
当我停止项目时,Xcode显示了一些错误日志:
在 0.0.0.0 端口 9527 上提供 HTTP ...
追溯(最近一次通话):
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py”,第 162 行,在 _run_module_as_main 中
"main", fname, loader, pkg_name)
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py”,第 72 行,在 _run_code 中
run_globals 中的执行代码
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SimpleHTTPServer.py”,第 235 行,位于
测试()
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SimpleHTTPServer.py”,第 231 行,在测试中
BaseHTTPServer.test(处理器类,服务器类)
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/BaseHTTPServer.py”,第 599 行,在测试中
httpd.serve_forever()
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py”,第 236 行,在 serve_forever 中
poll_interval)
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py”,第 155 行,在 _eintr_retry 中
return 函数(*参数)
键盘中断
请帮助或尝试提供一些实现方法。提前致谢。
您的构建仍在该阶段,因为您正在执行的命令只有在您提出请求后才会终止。最有可能的是,Web 服务器 运行 正在正确运行,但是 Xcode 正在等待它终止,直到您单击 'stop' 按钮它才会终止。
当您在 Python 内停止内置 Web 服务器时,您看到的堆栈跟踪是正常的。如果您在使用终端时使用 CTRL + C 退出它,您会看到类似的消息。
一般来说,构建的 'execute shell' 阶段应该 运行 命令执行一个任务然后自行退出,但是如果你试图让网络服务器 运行在构建期间,您需要使用两个阶段。构建开始时的一个阶段启动 Web 服务器并分叉它,构建结束时的另一个阶段终止它。根据我的经验,虽然变量不会在构建阶段之间持续存在,但您可以将 PID 写入文件,然后在后期读取它。
除了这个解决方案,我建议您重新考虑是否需要 运行 服务器作为构建的一部分。如果您将来开始使用一些持续集成,或者只是想 运行 同时构建多个,分配端口号的额外复杂性将带来挑战。
我正在尝试在 运行 一个 iOS 项目之前 运行 一个 http 服务器。我在 Run Script
中添加了脚本 python -m SimpleHTTPServer 9527
。
Run
按钮时,它停止了,就像
当我停止项目时,Xcode显示了一些错误日志:
在 0.0.0.0 端口 9527 上提供 HTTP ... 追溯(最近一次通话): 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py”,第 162 行,在 _run_module_as_main 中 "main", fname, loader, pkg_name) 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py”,第 72 行,在 _run_code 中 run_globals 中的执行代码 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SimpleHTTPServer.py”,第 235 行,位于 测试() 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SimpleHTTPServer.py”,第 231 行,在测试中 BaseHTTPServer.test(处理器类,服务器类) 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/BaseHTTPServer.py”,第 599 行,在测试中 httpd.serve_forever() 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py”,第 236 行,在 serve_forever 中 poll_interval) 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py”,第 155 行,在 _eintr_retry 中 return 函数(*参数) 键盘中断
请帮助或尝试提供一些实现方法。提前致谢。
您的构建仍在该阶段,因为您正在执行的命令只有在您提出请求后才会终止。最有可能的是,Web 服务器 运行 正在正确运行,但是 Xcode 正在等待它终止,直到您单击 'stop' 按钮它才会终止。
当您在 Python 内停止内置 Web 服务器时,您看到的堆栈跟踪是正常的。如果您在使用终端时使用 CTRL + C 退出它,您会看到类似的消息。
一般来说,构建的 'execute shell' 阶段应该 运行 命令执行一个任务然后自行退出,但是如果你试图让网络服务器 运行在构建期间,您需要使用两个阶段。构建开始时的一个阶段启动 Web 服务器并分叉它,构建结束时的另一个阶段终止它。根据我的经验,虽然变量不会在构建阶段之间持续存在,但您可以将 PID 写入文件,然后在后期读取它。
除了这个解决方案,我建议您重新考虑是否需要 运行 服务器作为构建的一部分。如果您将来开始使用一些持续集成,或者只是想 运行 同时构建多个,分配端口号的额外复杂性将带来挑战。