Sellerie: Wie kann man die Anzahl der Aufgaben in der Warteschlange begrenzen und den Fütterungsvorgang beenden, wenn sie voll sind?

Ich bin sehr neu bei Sellerie und hier ist die Frage, die ich habe:

Angenommen, ich habe ein Skript, mit dem ständig neue Daten aus der Datenbank abgerufen und mit Sellerie an die Mitarbeiter gesendet werden sollen.

tasks.py

# Celery Task
from celery import Celery

app = Celery('tasks', broker='amqp://guest@localhost//')

@app.task
def process_data(x):
    # Do something with x
    pass

fetch_db.py

# Fetch new data from DB and dispatch to workers.
from tasks import process_data

while True:
    # Run DB query here to fetch new data from DB fetched_data

    process_data.delay(fetched_data)

    sleep(30);

Hier ist mein Anliegen: Die Daten werden alle 30 Sekunden abgerufen. Die process_data () - Funktion kann viel länger dauern und abhängig von der Anzahl der Worker (insbesondere wenn zu wenige vorhanden sind) kann die Warteschlange gedrosselt werden, wie ich verstehe.

Ich kann die Anzahl der Arbeiter nicht erhöhen.Ich kann den Code so ändern, dass er die Warteschlange nicht mehr füllt, wenn sie voll ist.

Die Frage ist, wie stelle ich die Größe der Warteschlange ein und woher weiß ich, dass sie voll ist? Wie soll man mit dieser Situation umgehen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage