gpt4 book ai didi

python - 将 Python Cement 与 asyncio 相结合

转载 作者:太空宇宙 更新时间:2023-11-04 05:54:22 24 4
gpt4 key购买 nike

寻找有关如何将 python cement 框架 ( http://builtoncement.com/ ) 与 asyncio ( https://docs.python.org/3.4/library/asyncio.html ) 相结合的一些建议。

我有一个基于 asyncio 的事件引擎启动并运行,我对它的进步和简单性感到非常满意。表现也不错。

现在我需要添加更复杂的处理程序、 Hook 和插件并浏览我发现的各种选项,cement 似乎是我的最爱并且维护得很好。

我喜欢它处理日志记录、配置、参数、输出和插件这一事实。

但是我找不到将 asyncio 与 cement 框架一起使用的示例。

无论是否可能、建议甚至是 cement 的替代品(与 asyncio 配合良好)的任何观点都将非常受欢迎。

谢谢!

最佳答案

事实证明,对于大多数部分来说,将 cement 与 asyncio 集成起来非常容易。我发现的最佳方法是使用您自己的实例扩展 CementApp 并利用 setup() 获取循环并在需要时注册额外的线程池。

注册一个 _post_run 钩子(Hook)允许你执行 init generator 的 run_until_complete

在注册 _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

关于python - 将 Python Cement 与 asyncio 相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28601144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com