Call Python Script from Javascript
我在dreamhost服务器上,并且有一些按下按钮时会调用一些javascript的HTML。点击此按钮时,我试图调用python脚本。
首先,据我所知,由于我位于共享主机上,因此我无法使用AJAX,因为它不受支持,因此我需要在没有AJAX的情况下执行此操作。现在,我正在尝试执行一个
我也意识到做
因此,如果有人打电话告诉我如何直接调用它,或者帮助我在浏览器控制台中解决此错误,那就太好了。
谢谢您的帮助
编辑
当用户点击此文件上的按钮时,我有一个HTML文件,它会调用HTML文件中的一些javascript。这个javascript当前向同一服务器和HTML文件上的python脚本发出POST请求。
我想要的不是向服务器上的python文件发出发布请求,而是要从运行的javascript直接调用python文件,只需在HTML文件中单击按钮即可。
包含javascript和python文件的HTML文件都在同一服务器上。而且我不希望python在浏览器中运行,我希望它在服务器的后台运行。
如何使用Javascript调用此python文件?
据我了解您的问题,您要执行的操作称为"远程过程调用",或某种面向服务的体系结构(SOA)。
您向服务器发出
您可以设置诸如flask或cherrypy之类的中间件来在发送GET,PUT,POST ...请求时运行脚本。在中间件控制器内部,您可以调用脚本。
基本上,您已经开始创建RESTful api,这是如今在后端运行逻辑的一种非常标准的方法。
进行网址路由的不同框架的一些示例:
Python:
- CherryPy:http://docs.cherrypy.org/en/latest/tutorials.html#tutorial-9-data-is-all-my-life
- Flask:http://flask.pocoo.org/docs/0.10/quickstart/
- 较低级别的python的较长列表:http://wsgi.readthedocs.org/en/latest/libraries.html
NodeJ:
- 快递:http://expressjs.com/guide/routing.html
- Koa:https://github.com/koajs/route
- 哈皮(Hapi):http://hapijs.com/tutorials/routing
这个问题也很好:JSON,REST,SOAP,WSDL和SOA:它们如何链接在一起
您可以通过浏览器执行此操作的另一种方法是使用套接字,该套接字将打开客户端与服务器之间的连接。
在javscript中,您可以使用socketio:
1 2 3 4 5 | <script src='/socket.io/socket.io.js'> var socket = io(); socket.connect('http://localhost:8000') socket.emit('run_a_script_event', {arg1: 'hello', arg2: 'world'}); |
在您的python代码中,您可以将Socketio客户端用于python(https://pypi.python.org/pypi/socketIO-client):
1 2 3 4 5 6 7 8 9 | from your_module import thescript from socketIO_client import SocketIO, LoggingNamespace def run_a_script(*args): print('arg1 and arg2', args) thescript() socketIO = SocketIO('localhost', 8000, LoggingNamespace) socketIO.on('run_a_script_event', run_a_script) |
看起来还有一个专门用于烧瓶的版本:https://flask-socketio.readthedocs.org/en/latest/
或者您可以通过使用编译器将python转换为javascript直接在浏览器中运行python:
- http://www.skulpt.org/
或者,您可以使用节点javascript生成运行python脚本的子进程:
- https://stackoverflow.com/a/20973067/2026508
或者您可以将python脚本导入节点,例如:
- 使用node-python从python托管的Web应用程序执行python脚本?