从Python函数返回但继续执行该函数

4 投票
2 回答
5880 浏览
提问于 2025-04-17 18:32

有没有办法让一个函数在返回数据给调用它的函数后,继续执行下去?

我在维护一个网页应用,这个应用需要在使用它的人的电脑上运行一个客户端服务。服务器通过远程过程调用(RPC)连接到用户的客户端。这个客户端是一些存放在GitHub上的Python脚本,需要通过网页应用上的一个按钮进行更新。更新的过程是客户端从GitHub上拉取最新的代码,然后自己重启。我想要的是,客户端里面的更新方法能够把更新状态的信息反馈给服务器,这样就可以显示给用户。这些信息可能是这样的:“正在从GitHub下载...”,“下载完成,正在重启”,“更新成功。”

2 个回答

0

你可以使用celery或者类似的工具,把那些需要很长时间才能完成的任务放到后台去运行,同时把一些状态信息存储起来。然后你可以通过AJAX或者websockets来获取状态更新,并在页面上刷新显示这些状态。如果你不想把结果存储在数据库里,还可以找到一些用JS写的RabbitMQ接口,这样也能获取更新。

另外,这个链接可能对你有帮助: django.http.StreamingHttpResponse

2

使用Python中的生成器,特别是yield这个语句,可以实现你想要的功能。

撰写回答