gpt4 book ai didi

python - 如何允许长时间运行的 python 函数在其父函数终止后继续执行?

转载 作者:太空宇宙 更新时间:2023-11-04 06:10:46 25 4
gpt4 key购买 nike

我有一个长期运行的 python 函数,作为 http 请求处理程序的一部分执行(它与表单上选择的各种选项相关联)。

http 请求处理程序等待函数完成执行,然后将适当的响应返回给发起者。

但是,由于该函数可能需要一些时间才能执行,请求可能会在那段时间内被中断 - 导致请求处理程序终止,并中断长时间运行的函数的执行。这是不可取的 - 我宁愿确保函数在每次调用时都完成执行。

我玩过使用子进程,但它们似乎在请求处理程序结束时就结束了。

我能否/如何在单独的线程或进程中触发该函数,以表明它应该被允许比其父进程存活更久?


守护进程似乎可以部分解决我的问题 - 他们可以比他们的 parent 活得更久? - 但我仍然希望父进程监视/访问子进程的结果。

即:

  • 父进程可能先于子进程死亡。在这种情况下,我希望子进程能够完成
  • 只要父进程还活着,我希望它能够访问子进程,监视它等等...如果父进程没有死,我希望它可以访问 child 正在进行的处理的结果。

最佳答案

如果您将处理程序作为新的 threads 启动,您可以将它们作为 daemons 运行即使主线程存在,它们也会运行。主线程不是守护线程,因此需要在启动子线程之前明确为其子线程设置此属性。

来自手册:

线程可以被标记为“守护线程”。这个标志的意义在于,当只剩下守护线程时,整个Python程序就退出了。初始值继承自创建线程。可以通过守护程序属性设置标志。

注意:守护线程在关闭时突然停止。它们的资源(如打开的文件、数据库事务等)可能无法正常释放。如果您希望您的线程正常停止,请将它们设置为非守护进程并使用合适的信号机制,例如事件。

关于python - 如何允许长时间运行的 python 函数在其父函数终止后继续执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18900537/

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