python - Django 如何停止函数的执行

标签 python ajax django

我正在尝试通过 Ajax 调用 python 函数。我想停止执行该功能。我试图刷新页面,但它并没有停止。当我停止 Django 服务器时,它就会停止。

这里有一些代码:This Call 调用 HTTP 请求

class ScrapData():

    @classmethod
    def search_status(self, urls_list):
      for url in urls_list:
            r = requests.get(url)
            text = r.text
            #...

      return 1

通过 Ajax 调用这个 View

class SearchData(View):

    def get(self, request, *args, **kwargs):
        urls_list = [];
        response = ScrapData().search_status(urls_list)

        return HttpResponse(response)

我想停止这个功能。我怎样才能做到这一点?谢谢

最佳答案

这个 Django 应用程序是如何提供服务的?有多少个进程和线程?您如何知道哪个线程运行特定请求?有几种 Python 方法可以处理这个问题,但它不像“停止特定请求”那么简单。

在我看来,在管理、可扩展性和 self 健全方面处理长轮询任务的最佳方法是使用像 Celery 这样的工具。还有一个专用的SO question on how to revoke a Celery task .

Django Channels 是解决这个问题的另一种新方法,但在可以使用它而不是 Celery 之前它需要更多的开发。

关于python - Django 如何停止函数的执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41542230/

相关文章:

javascript - 是否可以使用 Django 从 JS 文件中包含 CSS(这是棘手的部分)?

python - django 自定义重置密码表单

c# - 如何将多维数组传递给 ASP.NET MVC 3 JsonResult Controller

Django 模板,在 for 循环中的每个模板标签后抑制换行符

python - 如何使用 Base64 字符串或字节数组设置 QLabel

python - OpenERP缓存功能

javascript - 如何从异步调用返回响应?

javascript - 按退出键中止 AJAX 文件上传

python - 如何在 keras fit_generator() 中定义 max_queue_size、workers 和 use_multiprocessing?

Python SQLModel - 截断表或全部删除并获取行数