Wie kann ich eine performance-intensive queue im Hintergrund abarbeiten?
am 28.02.2014 - 09:25 Uhr in
Hallo zusammen,
in einer Drupal 7 Installation bekomme ich von einem anderen System alle zwei Stunden 300 Artikelnummern übergeben, also z.B.
12asdjkadg686
890789423hjha
asdas797a4141
....
80980as234687
Jede dieser Artikelnummern wird an eine Funktion weiterverarbeitung(param=arikelnummer) übergeben. Schließlich wird nach einer Datenanreicherung aus
jeder Artikelnummer ein neuer node vom type "artikel" generiert bzw. ein Update eines bereits bestehenden node durchgeführt.
Das alles funktioniert von der Logik her gut, aber nicht von der Performance.
Bis jetzt habe ich mich in den Cron-Hook eingehängt und die übergebenen 300 Artikelnummern sofort weiterverarbeitet. Die Folge war, dass sich
mein Cron aufgehängt hat und die Daten nicht zuverlässig weiterverarbeitet wurden bzw. das komplette System beim Cronlauf eine Minute hing.
Jetzt suche ich eine performantere und vor allem zuverlässigere Lösung, die möglichst im Hintergrund läuft und idealerweise dann, wenn das System wenig ausgelastet ist. Die Weiterverarbeitung ist nicht sehr zeitkritisch, d.h. sie sollte nur innerhalb eines halben Tages abgeschlossen sein.
Ich bin auf Queues gestossen, kenne mich damit aber leider nicht in der Tiefe aus. Wie ich Artikelnummern an eine Queue übergebe weiss ich.
Aber wie kann ich denn die Einträge in dieser Queue kontinuierlich und im Hintergrund abarbeiten, ohne dass das System steht? Brauche ich dazu zwingend einen Cron-Job oder geht das auch ohne?
Wäre schön wenn jemand einen Tipp für mich hat. Es MUSS auch nicht Queue sein, es geht auch jeder andere Lösung, die im Hintergrund arbeitet.
Vielen Dank und Grüße
Rhodes
- Anmelden oder Registrieren um Kommentare zu schreiben
irgendwie
am 28.02.2014 - 12:38 Uhr
passen deine Spezifikationen nicht zusammen.
Du schreibst einerseits, dass du alle 2 Stunden eine neue Datei erhältst, aber auf der anderen Seite diese innerhalb 12 Stunden verarbeiten willst.
Wie geschieht die Anreicherung?
Nutzt du feeds und feeds_tamper dafür?
In jedem Falle brauchst du einen Auslöser. Wenn du es selbst nicht machen willst/kannst, ist cron die einzige Alternative.
Es kommt darauf an, wie der Anreicherungsprozess abläuft, welche Daten dafür verwendet werden, und woher diese kommen, ob es sinnvoll ist, dies außerhalb von Drupal in einem Batch zu erledigen, und Drupal nur den fertigen Datenstrom anzubieten, der dann mit feeds eingelesen wird.
Grüße
Ronald
Ja, liest sich für mich auch
am 28.02.2014 - 16:11 Uhr
Ja, liest sich für mich auch stark nach einem Feeds Anwenudungsfall. Da kann man dem Import schon im Hintergrund ausführen lassen. Wenn Du das vernünftig verpackst erstellt Dir feeds auch schön die nodes.Wobei mir nicht klar ist wie die Abläufe sind. Dazu mal bitte mehr Beschreibung. Wen Du nur die IDs reinkriegst, heißt das dann, dass Du die DB schon hast mit den Produkten???