【问题标题】:Asynchronous unblocked Execution/triggering of python script through javascript通过javascript异步畅通执行/触发python脚本
【发布时间】:2016-02-12 13:40:27
【问题描述】:

我目前正在开发一个 ROFFLE 应用程序,我可能不太擅长正确表达,我现在能做什么?
用户访问一个网站,他单击一个按钮,然后对 python 文件(test.py)进行了 ajax 请求,但是当他退出时,请求被中止并且处理完成,直到浪费了

我想做什么?
当用户单击按钮时,处理开始。即使用户离开网页,脚本也不应该被杀死。简而言之,Javascript 部分应仅限于触发/排队要执行的 Python 脚本(使用在线提供的输入),该脚本必须由支持它的 Web 服务器通过 CGI 进行部署

如何实现?

请注意:
1. 这是一个网络应用程序,不能是一个软件

【问题讨论】:

    标签: javascript python ajax cgi


    【解决方案1】:

    从我读到的问题中,您已经设法通过 CGI 在 Web 服务器中运行 Python 脚本,并且您已经知道如何从 JavaScript 向该 Web 服务发出 HTTP (ajax) 请求。

    当您现在在浏览器中关闭页面(或挖掘机切断您的线路)时,后端 python 脚本不会终止。事实上,后端怎么会知道你已经关闭了页面呢?您的 Python 脚本仍在后端运行,但不会留下任何人来捕获 Web 服务器的 HTTP 响应并将其显示给您。

    但是,当你想启动某种恶魔,一个应该在后端运行很长时间的程序时,你的 Python 脚本应该通过 Popen 以保持子进程活着,即使脚本返回了它的 HTTP 响应(甚至可能 Web 服务器已经关闭)。

    此模式有时用于远程控制在测试环境中模拟 IoT 设备的小型服务器。只需通过从简单的交互式网页触发的一些即发即弃的 HTTP 请求来启动和停止模拟。

    【讨论】:

    • 我的系统是一个 ML(机器学习)基础,所以发生的情况是那个人发送了一个 AJAX 请求,程序被触发,现在这个人在触发 15 分钟后(如果过程没有完成然而)被赋予了一个唯一的代码,现在当他在一个小时左右后来的时候,如果这个过程完成了,他会得到结果,否则告诉用户再等一段时间
    • 酷。然后,您的后端可能会启动一个异步进程,并使用诸如“在...分钟内再次访问我们以查看结果”之类的消息来响应用户。马上。但是,您将面临在用户返回时正确重新识别用户的问题。
    • 但是如何实现呢?
    • 我认为“它”是指重新识别。好吧,您可以做所有事情,从在用户浏览器中设置 cookie 到使用密码进行完整的自我注册用户管理。或者您可以返回一个用户可以稍后输入的幻数(“再次访问我们并输入 '6F5RHGTK73P' 以查看结果”——当您在网站上强制执行 https 时,这在简单性以及安全性和隐私性方面都很酷) .这取决于情况,但我至少会考虑后者。
    • 恐怕重新识别用户没什么大不了的,但我将如何访问脚本本身,可能是代码 sn-p 或谷歌聊天/电子邮件之类的东西?
    猜你喜欢
    • 2012-02-16
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    相关资源
    最近更新 更多