在我們的網站,我們希望爲我們的用戶創造每小時報告,我們的第一個解決方案是這樣的(我用芹菜爲):有效的方式來掃描整個表芹菜
這裏是我用來創建爲單個用戶報告:
@app.task
def create_report(user):
# this method creates report for given user
pass
,然後我創造了這個定期任務,芹菜運行任務每60分鐘:
@app.task
def report_cron():
for user in User.objects.all():
create_report.delay(user)
這soultion將用戶添加到隊列芹菜的整個表(我們正在使用rabbitmq)。
目前這個解決方案工作正常(我們沒有太多的用戶),但你能幫助解決這個問題的更好的解決方案嗎?
感謝您的迴應。我想我沒有足夠好地描述我的問題。創建單個報表並不是我主要關心的問題(它可能需要儘可能多的時間和db查詢)問題是每次芹菜運行'report_cron'時,它將讀取整個用戶表並將其推送到rabbitmq隊列。讀取整個表並將其推送到隊列的過程可能是耗費時間/資源的。我想知道我該如何處理問題的這一方面。 – aliva