celery 配合 rabbitmq 進(jìn)行非同步任務(wù)時(shí),發(fā)現(xiàn) rabbitmq 裡訊息的數(shù)量是一直增加的,但是這些訊息其實(shí)也已經(jīng)被 task 處理掉.
查看 rabbimtq 自帶的後臺(tái),發(fā)現(xiàn) Queued messages 裡面,ready 和 total 的數(shù)量都達(dá)到了 5000 多,unacknowledged 的??值為 0。不過實(shí)際在工作的時(shí)候,unacknowledged 的??值會(huì)變化的,但是最後會(huì)變成0
celery 的配置也沒有特殊的地方,就只設(shè)定瞭如下的內(nèi)容
CELERY_IMPORTS = ('testtasks',)
BROKER_URL = 'amqp://guest:guest@localhost:5672//'
CELERY_RESULT_BACKEND = 'amqp://'
接著看系統(tǒng)的資源,erl 的進(jìn)程記憶體比較大,大概暫用了 300 多 M
是我這邊 celery 的配置有問題麼?
擁有18年軟件開發(fā)和IT教學(xué)經(jīng)驗(yàn)。曾任多家上市公司技術(shù)總監(jiān)、架構(gòu)師、項(xiàng)目經(jīng)理、高級(jí)軟件工程師等職務(wù)。 網(wǎng)絡(luò)人氣名人講師,...
已經(jīng)解決了,升級(jí)了 rabbitmq 到 3.3 以上版本就可以了。
之前用的是 rabbitmq 3.1 的版本,然後 celery 是 3.1 的版本
真正解決問題的方法是,在task裡增加一個(gè)ignore_result=True屬性,如下
@app.task(ignore_result=True)