楼主:
mit958 (JerryTsai)
2016-08-11 11:34:34请问各位大大
程式码如下
@app.route('/recommend', methods=['POST'])
def rec():
log.debug("Get request")
id = int(request.json['ID'])
sourse_db = int(request.json['Source_DB'])
target_db = int(request.json['Target_DB'])
try:
if not id:
abort(400)
except:
raise
threading.Thread(target=rec_sys, args=(id,sourse_db,target_db)).start()
return status
我想在收到一个post之后 先return status
边在rec_sys做一系列的pull db,text process
但是这个threading会莫名的卡住 请问是发生什么问题吗
感谢!!!
当初 app.run 时候有传入 threaded=True 吗?
楼主: mit958 (JerryTsai) 2016-08-11 14:13:00
有试过 加进去反而会在request.json就卡住了补充 原本会卡在rec_sys 中 read csv的地方如果不用thread可以正常呼叫
requests 应该是 blocking 的呼叫...你可能需要用 gevent 搭配解决这个问题看走眼,我还以为你有用 requests 存取网络,看起来没
楼主: mit958 (JerryTsai) 2016-08-11 16:34:00
结果改用linux multiprocessing的方式就可以了会是thread gil的问题吗@@
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2016-08-11 16:50:00你上面的程式整个坏了
作者:
Falldog (Yo)
2016-08-11 22:06:00你有access到SQLite吗 没道理multiprocessing ok threadfail
之前有遇过类似的 有其他thread太忙 导致要不到gil