繁体   English   中英

在不同进程中访问事件循环

[英]Access Event Loop In Different Process

如果我有 2 个 python 进程,第一个脚本永远运行异步事件循环,第二个脚本是 HTTP API 服务器,有没有办法访问第一个进程的事件循环以从API 服务器?

就像用户访问/api/example一样,它会添加一个任务,比如在事件循环中使用loop.call_soon()

当这两个进程完全分开执行时,这可能吗?

这不可能。

我可以想象(取决于你到底想要什么以及这些任务到底是什么)一些技巧/解决方法:

您可以尝试的一种解决方案是,两个进程之间存在连接(例如 TCP 连接,asyncio 进程充当 TCP 服务器,HTTP 服务器充当客户端),其中 HTTP 服务器将足够的信息发送到 asyncio服务器创建任务并将其添加到其事件循环中。

另一种选择是,http 服务器创建一个 python 文件,其中包含要执行的代码,通过 TCP 连接或通过信号(例如信号 HUP)通知异步服务器检查给定目录中的新文件,导入它并将它添加到它的循环中。

在安全方面,这两种解决方案都有点棘手,因为任何能够在特定目录中写入文件或任何能够连接到 TCP 套接字的人都可能触发一个动作。

但一切都取决于你的背景。

或者您可以尝试在与异步进程相同的进程中将 HTTP API 服务器作为线程启动?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM