我有以下代码:
import aiohttp.web
app = aiohttp.web.Application()
# ...start server using TCPSite and AppRunner
app.router.add_get("/restart", restart_handler)
这里我用端点 GET /restart
启动服务器。此方法应该重启服务器并将 200 OK
返回给客户端(假设重启失败是不可能的)。
那么,我应该如何实现 restart_handler
?我有以下草稿:
import os
import sys
async def restart_handler(request: aiohttp.web.Request):
"""This handler restarts server and return 200 OK in case of success.
"""
# return aiohttp.web.Response
os.execv(sys.executable, [sys.executable] + sys.argv)
sys.exit(0)
# return aiohttp.web.Response
为了设置 200 OK
状态,restart_handler
应该以 return aiohttp.web.Response(status=200)
终止,这是我的问题:
return
放在函数的开头,os.execv
将不会执行。return
也不会被执行。还有其他方法可以设置响应状态吗?