我有點修復 - 我在後端運行了一個node.js應用程序,並且有一段用Python編寫的代碼。這個Python程序需要在後臺不斷運行,我需要從某個客戶端的API調用中的JavaScript代碼中調用該程序中的函數。
我正在考慮將Python程序作爲守護程序運行,但是我無法找到任何有關如何通過javascript代碼調用該守護程序的功能的任何信息。
我從來沒有與守護進行過任何工作,所以在這一點上,我很無知。我想知道這樣的事情是否可能。
我能想到的唯一的其他選擇是切換到Django並將數據作爲Django應用程序本身的一部分進行維護。我可以做到這一點,但我不想。我無法在JavaScript中編寫Python代碼,因爲它依賴於我在npm上找不到的某些專用庫。
如果有人遇到過這個問題,請告訴我。謝謝!調用python函數的節點js後端
1
A
回答
1
下面是一個簡單的例子(與pip install flask
)。假設函數是「這是一個真正的單詞」;而重要的準備工作是加載字典。這裏是代碼:
from flask import Flask, request, jsonify
app = Flask(__name__)
# heavy loading
dictionary = frozenset(
line.rstrip('\n') for line in open('/usr/share/dict/words'))
# lightweight processing
@app.route('/real_word', methods=['POST'])
def real_word():
result = request.form['word'] in dictionary
return jsonify(result)
# quick-and-dirty start
if __name__ == '__main__':
app.run(host='127.0.0.1', port=7990)
當你運行它,你可以執行一個請求127.0.0.1:7990/real_word
,發送您的字作爲POST參數。例如,假設npm install request
:
var request = require('request');
function realWord(word) {
return new Promise(function(fulfill, reject) {
request.post(
'http://127.0.0.1:7990/real_word', {
form: {
word: word
}
},
function (error, response, body) {
if (!error && response.statusCode == 200) {
fulfill(JSON.parse(body));
} else {
reject(error, response);
}
}
);
});
}
realWord("nuclear").then(console.log); // true
realWord("nucular").then(console.log); // false
(顯然,在示例中那麼簡單,文字閱讀的名單幾乎沒有「重」,而且也實在沒有理由JSONify一個布爾,但你可以採取完全相同相同的代碼結構並將它用於包裝幾乎所有的功能,並且可以連續輸入任何類型的輸入/輸出。)
如果只是爲了您的需要,您可以直接運行Python程序;如果你想要的是生產質量的東西,請查看如何在WSGI容器上託管Flask應用程序,例如Gunicorn或mod_wsgi。
0
您可以使用節點的子進程來調用python腳本,如果你願意,你甚至可以將結果返回給javascript?
https://medium.freecodecamp.com/node-js-child-processes-everything-you-need-to-know-e69498fe970a
Javascript.js
var exec = require('child_process').exec;
cmd = `python python.py` // insert any command line argument
exec(cmd, function(error, stdout, stderr) {
console.log(stdout);
});
Python.py
print("Heyo");
即使壽這個例子只捕獲從控制檯的單一輸出,可以實現流。
相關問題
- 1. 回調函數節點的回調js
- 2. Js:點擊調用函數
- 3. 節點js,函數執行
- 4. 如何在節點js中同步我的函數調用?
- 5. 節點js中的同步函數調用
- 6. 節點JS/Express應用程序 - 調用函數中的一個函數
- 7. 節點JS - 數據庫調用異步?
- 8. 如何從restcall節點獲得響應後才能調用函數js
- 9. Python後端與JS前端
- 10. 節點js在啓動時調用一次函數
- 11. 如何在節點js中調用公共函數
- 12. 如何調用外部函數節點JS路線
- 13. 將節點js中的JWT從後端傳遞到前端
- 14. Python插入節點函數
- 15. 節點JS後的數據不確定
- 16. 使用節點JS作爲後端的離子框架
- 17. 如何從客戶端javascript調用節點函數? (HTML)
- 18. 如何將promise轉換爲節點js中的回調函數?
- 19. 節點js +多個嵌套的內部函數與回調
- 20. 使用PHP調用PHP函數在後端調用PHP函數
- 21. 節點JS上的HTTP請求回調與節點JS
- 22. 使用節點調試調試節點js
- 23. 谷歌端到端加密節點JS
- 24. Python和節點JS通信
- 25. 節點JS執行兩次函數
- 26. 直到函數在節點JS
- 27. 後數據不被認可節點JS
- 28. 調用js函數
- 29. JS函數調用
- 30. 執行後未定義節點JS函數
在啓動腳本(假設一個Linux環境)不能啓動python部分嗎?或者流程需要溝通? – Mikael
他們需要溝通。實質上,我希望JavaScript部分在每次調用API時觸發一個python函數。 – Zeokav
Python程序可以啓動一個偵聽特定端口的套接字服務器。我假設Python程序中的函數需要輸入參數,以便Node應用程序可以連接並寫入該套接字。然後,Python端的套接字偵聽器將處理傳入的連接/數據並執行所需的例程。不確定Python,但它是Java中的幾行代碼,例如 – marekful