我有一台服务器,当客户端产生请求时,它会调度一些长时间运行的作业。由于这些作业长时间运行并且特别是资源繁重,我想要一种方法在客户端中止其XHR时终止与服务器端客户端请求相关的进程。另一个需要注意的重要事项是,所有这些长计算都是在这一个用户请求中完成的(最终我想转移到涉及Celery的轮询系统,但这是未来的)。
我正在使用JQuery的AJAX扩展,我的前端有一个按钮,在点击时会中止AJAX请求。这个按钮只调用xhrJQ.abort()。据我所知,唯一可能可观察的xhrJQ.abort()确实关闭了客户端正在监听的套接字,尽管我不确定这是否属实。我正在使用Django,因此我可以通过Django传递的HTTPRequest对象获取客户端请求的地址和端口。但我不确定1)我关于xhrJQ.abort关闭套接字的假设是否为真2)如果确实如何检测客户端关闭套接字。
我已经四处寻找并且无法找到一种方法来轻松查看客户是否取消了他们的请求,而不是建立一种方式在服务器和客户端之间自己传达这些信息(使用轮询系统)以芹菜为例)。有没有人有任何提示或建议?
谢谢!