signals - 如何使用 aiohttp 实现 SIGTERM 和 SIGINT 信号的回调
问题描述
我正在尝试对由 aiohttp 运行的 Web 服务器实现正常关闭。我需要它优雅地关闭和清理 redis 和 DB 连接。
对于我在不同的文档中看到的关于这个的内容,我已经使用主循环的 add_signal_handler 注册了一个回调,但是当我的服务器关闭时仍然没有触发回调。
这是我得到的:
def gracefull_shutdown(signame, loop):
logging.debug('graceful shutdown callback')
app = web.Application()
if __name__ == '__main__':
asyncioLoop = asyncio.get_event_loop()
for signame in {'SIGINT', 'SIGTERM'}:
asyncioLoop.add_signal_handler(
getattr(signal, signame),
functools.partial(gracefull_shutdown, signame, asyncioLoop)
)
web.run_app(app, handle_signals=True)
你有什么主意吗 ?提前感谢您的回答
解决方案
好的,官方文档中解释了解决方案,但不容易找到。您可以通过 Web 应用程序对象的属性 on_shutdown 注册回调。
https://docs.aiohttp.org/en/stable/web_advanced.html#aiohttp-web-graceful-shutdown
推荐阅读
- r - R 将在 Mac 上生成一个字符串数组,但在 Windows 上是一个因素
- c# - 游戏对象上的统一位置图像无法正常工作*已修复*
- eclipse - 在 Eclipse Windows Builder 设计视图中不显示任何内容
- python - Python Try-Except 与 If-Else 性能
- c# - 使用 Graph API 和委派权限将成员添加到 Microsoft Teams
- sql - 如何使用连接表应用过滤器
- javascript - 通过 serialPort Web API 进行串行通信
- angular - 当输入字段中的输入值以角度删除时隐藏一个div
- php - Ubuntu 20.04 和 PHP 不允许包含相关的 PHP
- javascript - 如何实现 JavaScript 在 Razor 的 @Html.Raw 中执行?