celery變量共享

問題

很多情況下我們想讓task共享變量,該怎麼做?

celery的併發原理

celery的併發任務池,有eventlet, gevent, prefork, thread類型

eventlet/gevent協程: 只有一個進程一個線程, 全局變量在task之間共享

prefork屬於multiprocessing: multiprocessing全局變量也是共享的

thread多線程: 全局變量共享

驗證方法

用ab命令模擬大量併發,很容易測試出來

ab -n 1000 -c 100 -p ./post.txt -T application/json http://xxxx:5000/xxx

結論

  1. celery如果訪問數據庫, gpu等資源, 不用擔心多次加載

  2. 注意: 如果在task中初始化全局變量, 初始化較慢, 同時又收到大量task請求,可能會導致初始化多次

佛說大乘無量壽莊嚴清淨平等覺經pdf
淨土大經科注2014-doc
此生必看的科學實驗-水知道答案
印光大師十念法(胡小林主講第1集)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章