外部停止功能处理

时间:2018-06-19 13:59:48

标签: python multithreading python-3.x

我有一个大问题。我正在一个Web Python项目中工作,在其中单击按钮后,将调用一个特定的控制器,然后还调用一个存在于python模块中的另一个函数,如下面的代码所示。但是,我需要第二个按钮来停止流功能控制器的过程。

import analyser
def stream():
    analyser.get_texts()
    response.flash = "Analysis Done."
    return ""

我一直在研究如何通过外部事件(类似于中断)来停止进程,但是我所拥有的解决方案都是关于如何使用来停止python脚本。 sys.exit(),例如,通过 return语句。这些解决方案对我都不起作用。

我希望用户只要我的函数 analyser.get_texts()一直保持处理状态,就可以随时停止该函数。

所以,我的问题是如何通过单击视图上的按钮来停止执行 stream 功能?谢谢。

1 个答案:

答案 0 :(得分:1)

如果我对您的理解正确,那么您的分析仪将无法提供自己的方式来终止正在进行的计算。因此,您需要将其包装到允许您在没有“同意”的情况下终止分析器的东西。

正确的方法取决于以这种方式终止分析器有多严重:它会使资源处于不良状态吗?

据此,您有多种选择:

  • 在单独的过程中运行分析。这些可以从外面干净地杀死。请注意,强制停止线程通常不是一个好主意,因此请使用进程。

  • 使用某种异步任务管理,可让您创建和停止任务(例如Celery)。