结合Python水泥和asynci

2024-06-16 09:31:06 发布

您现在位置:Python中文网/ 问答频道 /正文

寻找一些关于如何将python水泥框架(http://builtoncement.com/)与asyncio(https://docs.python.org/3.4/library/asyncio.html)相结合的指南。在

我有一个基于异步的事件引擎启动并运行,我对它的进展和简单性非常满意。性能也不错。在

现在我需要添加更复杂的处理程序、钩子和插件,浏览我发现的各种选项,水泥似乎是最受欢迎的,而且维护也很好。在

我喜欢它处理日志、配置、参数、输出和插件。在

然而,我找不到一个将asyncio与水泥框架一起使用的例子。在

任何一点,无论是可能的,建议的,甚至水泥的替代品(与asyncio很好地合作)将是非常受欢迎的。在

谢谢!在


Tags: httpsorg引擎com插件框架asynciohttp
1条回答
网友
1楼 · 发布于 2024-06-16 09:31:06

在大多数情况下,将水泥与asyncio集成起来非常容易。我发现的最好的方法是用自己的实例扩展CementApp,并利用setup()获取循环并在需要时注册其他线程池。在

注册一个\u post_run钩子允许您执行run_,直到初始化生成器完成为止

注册一个'u pre_close hook允许您完成所有挂起的异步任务。在

剩下的工作由_init()和_finish()协同程序完成,主要应用程序逻辑如下:

with myApp('myAppName') as app:
    app.run()
    app.log.info('Starting MyApp')

    try:
        app.run_forever()
    except (KeyboardInterrupt, SystemExit, CaughtSignal):
        app.log.info('Shutting down MyApp')

        app.close()

你可以在这里找到一个有效的例子:https://github.com/fxstein/SentientHome/blob/master/engine/event.engine.py

相关问题 更多 >