如何停止Django线程

1 投票
1 回答
856 浏览
提问于 2025-04-17 06:52

我有一个网站,使用了Jquery和Python。

我有一个Ajax请求,它会调用一个Python函数。在这个Python函数里,有一个和Linux的接口,用来执行一个C++库。

我遇到的问题是,当我通过Ajax发起两个请求来执行这个C++库时,这个C++任务可能需要长达2分钟才能完成。虽然这没问题,但当我离开当前页面时,由于之前的任务还没有完成,Django就不会让我加载新页面。

有没有办法让我知道页面是否正在离开,如果是的话,就调用Python停止它的函数,这样我就可以保持一些响应性。

我想到的一种方法是使用线程,但当我用这种方法时,如果在一个线程还在执行的时候我离开了页面,我可以从调试器看到它仍然返回数据,即使我已经不在发起请求的页面上。

所以,有没有人有什么想法,如何让Python在离开当前页面时终止所有线程。

谢谢!

1 个回答

0

看起来你需要为你的“阻塞”C++库实现异步执行。解决这类问题有几种方法,但我觉得使用线程绝对不是一个好主意……

一种方法是使用像Tornado这样的异步网络服务器来处理异步请求。另一种方法(我更喜欢这种)是使用Celery

撰写回答