Auf unserer Website wir stündlich Berichte für unsere Nutzer, unsere erste Lösung war diese erstellt werden sollen (ich bin mit Sellerie für die):effiziente Art und Weise mit Sellerie gesamte Tabelle scannen
hier ist das, was ich benutze für die Erstellung von Bericht für einen einzelnen Benutzer:
@app.task
def create_report(user):
# this method creates report for given user
pass
und dann habe ich diese Crontask, Sellerie läuft diese Aufgabe alle 60 Minuten:
@app.task
def report_cron():
for user in User.objects.all():
create_report.delay(user)
diese soultion fügt die ganze Tabelle von Benutzern in Sellerie Warteschlange (wir benutzen rabbitmq).
derzeit funktioniert diese Lösung gut (wir haben nicht viele Benutzer), aber können Sie mit einer besseren Lösung für dieses Problem helfen?
danke für die Antwort. Ich denke, ich habe mein Problem nicht gut genug beschrieben. das Erstellen eines einzelnen Berichts ist nicht mein Hauptanliegen (es kann so viel Zeit und db Abfragen dauern wie es will) Problem ist jedes Mal, wenn Sellerie läuft 'report_cron' es wird die ganze Tabelle der Benutzer lesen und schieben Sie es auf Rabbitmq Warteschlange. Der Prozess des Lesens der gesamten Tabelle und des Push-Vorgangs in die Warteschlange kann zeit- und ressourcenintensiv sein. Ich wollte wissen, wie ich mit dieser Seite des Problems umgehen kann. – aliva