我正在使用web.py框架编写命令行工具。我使用
启动服务器class MyApplication(web.application):
def run(self, port=8080, *middleware):
func = self.wsgifunc(*middleware)
return web.httpserver.runsimple(func, ('0.0.0.0', port))
app = MyApplication(urls, globals())
app.run(port=9090)
这时我收到一条控制台消息说:
http://0.0.0.0:9090/
如何将此邮件覆盖为我自己的自定义邮件?
答案 0 :(得分:0)
技术上可以通过覆盖sys.stdout
import sys
o = sys.stdout
sys.stdout = open('/dev/null', 'w')
app.run(port=9090)
当然这会抑制所有刷新到stdout的消息,因此您可能需要覆盖/猴子修补WSGIServer.start
方法,以分配回真实的sys.stdout
对象。
您可以在覆盖/猴子修补WSGIServer.start
功能中打印任何自定义消息。
完全可行的演示:
import web
from web import httpserver
import sys
WSGIServer = httpserver.WSGIServer
stdout = sys.stdout
message = "Welcome"
def _WSGIServer(*args):
server = WSGIServer(*args)
start = server.start
def _start(*args):
sys.stdout = stdout
print message
start()
server.start = _start
return server
httpserver.WSGIServer = _WSGIServer
class MyApplication(web.application):
def run(self, port=8080, *middleware):
func = self.wsgifunc(*middleware)
return web.httpserver.runsimple(func, ('0.0.0.0', port))
app = MyApplication([], globals())
sys.stdout = open('/dev/null', 'w')
app.run(port=9090)