我正在尝试通过 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/