希望用flask作為中介讓python和js交互,大家有什麼比較好的實踐經驗沒?
我試過了getjson之類的是可以的但是比較懷疑數據量大的話用什麼比較好啊?記得見過有人是pandas+d3.js+flask用的,不過找不到了
無邀自答,只因為在我主頁的信息流裡面多看了你一眼。。。。這話題選得各種切中我的要害啊。
我是勤勞的搬運工。
Getting Your Python Data Onto Browser介紹了如何將你的python數據弄到瀏覽器裡面。所以其實JSON才是python和js的中介,Flask框架只是幫你簡單的建立一個JSON伺服器而已,連RESTfull都談不上,如果你只是用來可視化的話。當然你也可以實現增修改刪的RESTful服務。同理,你也可以用Tornado,也許它的性能更好。
我假定是一個動態的服務,那麼Panda的DataFrame可以幫你快速地處理數據,Playing with REALTIME data, Python and D3和Data visualization using D3.js and Flask都有介紹相關的細節。
功能實現後,你所關心的可能是性能問題。我覺得大多數還不太會需要這方面的擔憂。最煩人的可能是開發和可維護性。當然如果關心性能,你也可以在你功能完善的情況下,考慮伺服器的優化,引入cache服務,伺服器平衡等等,我覺得這不是你關心的。
此外,強烈推薦數據可視化控,可以試試ipython notebook. 這篇Visualizing a NetworkX graph in the IPython notebook with d3.js可能會讓你強烈地喜歡上ipython notebook.
新手的個人經驗:比如現在我們要將一個數據從Javascript傳輸到Flask, 進行處理後再傳回Javascript. 我們可以使用jQuery中的getJSON, 並將數據轉化為String後進行傳輸.Javascript + jQuery:
mydata = {"msg", "Hello Flask."}; // 要傳輸的數據
$.getJSON("/dataconvector", { // Flask中獲取數據的function的url
mykey: JSON.stringify(mydata) // 定義一個keyword, 將數據stringify
}, function(data) { // 從Flask返回的數據
console.log(data.result);
$( "#result" ).text(data.result);
}
);
Python + Flask:
import json # Python build-in function
from flask import jsonify # Flask build-in function
@app.route("/dataconvector")
def dataConvector():
mydata = json.loads(request.args.get("mykey"))
mydata["msg"] = "Hello Javascript."
return jsonify(result=mydata)
flask-socketio, 相當簡單易用https://flask-socketio.readthedocs.org/en/latest/
推薦一個Github上面的開源項目,Caravel(GitHub - airbnb/caravel: Caravel is a data exploration platform designed to be visual, intuitive, and interactive),我正在學習和研究它
我現在是用Flask提供web訪問服務,只負責routing,直接傳JSON給JS,主要問題還是速度,目前沒想到有什麼更好的辦法了。
後段用flask,提供api,json格式數據跟d3交互 。
入門上手的話推薦看這本:Data Visualization with Python and JavaScript - O"Reilly Media
websocket啊
另外推薦神器 GitHub - brython-dev/brython: Brython (Browser Python) is an implementation of Python 3 running in the browser
bottle-websockettornado + websocket 也是一個選擇,格式 json 比較方便。
推薦閱讀:
※《Flask Web開發》中程序的許可權為什麼用十六進位表示?
※在python3下怎樣用flask-sqlalchemy對mysql資料庫操作?
※微框架 Python Flask 和 Ruby Sinatra,哪個更值得推薦?
TAG:JavaScript | Python | 數據挖掘 | 數據分析 | Flask |