返回响应后继续执行

时间:2021-02-20 18:57:45

标签: python http aiohttp

我有以下代码:

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) 终止,这是我的问题:

  1. 如果我将 return 放在函数的开头,os.execv 将不会执行。
  2. 由于明显的原因,函数末尾的
  3. return 也不会被执行。

还有其他方法可以设置响应状态吗?

0 个答案:

没有答案