django 多線程 + uWSGI 多線程 遇到的坑

當(dāng)django中使用了多線程時(shí),由于uwsgi默認(rèn)不開啟多線程,所以我們需要為uwsgi手動(dòng)開啟多線程。

閑言少敘,直接上配置。

在uwsgi 的配準(zhǔn)文件 uwsgi.ini 中 增加下面的 threads字段

21611729472_.pic_hd.jpg

processes = 4
threads = 2
代表開啟4個(gè)進(jìn)程處理客戶端的請(qǐng)求,每個(gè)進(jìn)程有兩個(gè)線程。

這樣就可開啟多線程。

具體項(xiàng)目中遇到的應(yīng)用場(chǎng)景

任務(wù)背景

django部署的一個(gè)爬蟲服務(wù)??蛻舳税l(fā)送一個(gè)請(qǐng)求后,django立即開啟一個(gè)線程,去執(zhí)行耗時(shí)的爬蟲任務(wù), django不等待爬蟲結(jié)果,便先返回給客戶端“請(qǐng)等待”的提示,在爬蟲任務(wù)執(zhí)行完畢后,再通過輪詢或websocket返回給客戶端爬蟲任務(wù)的結(jié)果。

遇到的問題

使用 django的 runserver 運(yùn)行項(xiàng)目沒問題,但當(dāng)使用 nginx+ uwsgi 運(yùn)行項(xiàng)目時(shí),爬蟲的HTTP請(qǐng)求不返回結(jié)果;當(dāng)使用 uwsgi單獨(dú)拉起項(xiàng)目時(shí),爬蟲的HTTP返回結(jié)果但速度奇慢。

解決方法

最后發(fā)現(xiàn)是uwsgi 默認(rèn)不支持多線程,需要開啟多線程(方法如上),即可解決問題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容