希望用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-websocket


tornado + websocket 也是一個選擇,格式 json 比較方便。


推薦閱讀:

《Flask Web開發》中程序的許可權為什麼用十六進位表示?
在python3下怎樣用flask-sqlalchemy對mysql資料庫操作?
微框架 Python Flask 和 Ruby Sinatra,哪個更值得推薦?

TAG:JavaScript | Python | 數據挖掘 | 數據分析 | Flask |