PlentySearchOrder für bestimmte Status

Hallo,

ich finde im Step PlentySearchOrders nur die Möglichkeit entweder einen bestimmten Status zu wählen der abgerufen werden soll, oder aber ein Bereich. Was mir fehlt wäre eine Möglichkeit eine komaseparierte Liste von Status zu übergeben, und dann nur diese abzurufen.

Einen Bereich zu nehmen und dann später per Filter die benötigten rauspicken verursacht leider zu viel API-Last. Ich hab mir jetzt beholfen in dem ich in mehreren Steps jeweils einen Status abrufe, und die dann per SpreadsheetAppend vereinige.

Das geht, ist aber nur begrenzt elegant ;-)

Hab ich eine andere Möglichkeit übersehen?

Gruß & schönes Wochenende,

Daniel

Gefühl wurde es jetzt durch das SpreadsheetAppend aber um Größenordnungen langsamer :-/


Kann ich da irgendwo den Cachemode aktivieren um das abzufangen, oder sonstwie optimieren? Das Log redet jetzt auch immer von einem AppendedSpreadsheet, obwohl ja egtl nur einmal zusammen gefasst wird, und es danach als "normales" Spreadsheet weiter laufen sollte (ich kaskadiere durch einige Mapper)?


image


Ich bin mir nicht ganz sicher ob der Flaschenhals Plenty oder Synesty ist, aber die Laufzeit vom Flow moveEschwege hat sich mit dem SpreadsheetAppend jetzt von unter einer Minute auf 51 Minuten erhöht :-/

Davor habe ich nur aus Status 5.12 gesucht (immer nur ein paar Dutzend Aufträge drin), jetzt zusätzlich aus Status 4 (derzeit 1800 Aufträge drin).

Das hat (vermutlich wegen des Shortlimits?) schon 23 Minuten gekostet:

image


Nur: wo kommen die anderen 27 Minuten her? Und: warum laufen Steps "zeitgleich" (bzw werden im Log so dargestellt)?

Diese beiden haben die selbe Start- und Endzeit, wie kann das sein?

image


Ich hab immer mal wieder ins Eventlog geschaut, tatsächlich gehangen hat es in diesem Step:

image


Das war gefühlt deutlich länger als die dargestellten 6,5 Minuten...


Wie kam da der Timeout zustande?

Ich spiel jetzt mal mit den Cache-Optionen an den Mappern, aber wenn ihr noch mehr Optimierungs-Tipps habt: immer her damit ;-)

Danke & Gruß


zur fehlenden komma-separierten Statusliste:

Das liegt daran, dass die Plenty-API nur statusFrom und statusTo bietet. Wir müssten "unter der Haube" das gleiche machen, was du gerade machst.
Das würde eh schon recht komplexen Step noch komplexer machen. Das wollen wir vermeiden und geben ja mit den von dir genutzten Mitteln die Möglichkeit, das auch anderweitig zu erreichen.


Bzgl. Timeout Fehler:

Kannst du uns mal die RunID schicken? Evtl. warst du leider auf einem überlasteten Server gelandet. Wir hatten heute Abend zwischen 20:00 und 22:00 ein Problem mit einer Node.

Mit der RunID können wir im Log sehen, auf welchem Server dein Flow lief. Bitte mal im Auge behalten, ob es wieder auftritt.


Bzgl. Tuning:

Was machst du grob in den Mappern? Wenn du dort z.B. viele Querverweise machst, dann kann der Cache-Mode helfen.

Je mehr Steps dann diesen Mapper konsumieren, desto effektiver wirkt der Cache-Mode. Den CacheMode gibts übrigens auch für den Filter

Der CacheMode ist vermutlich bei dem Mapper / Filter am effektivsten, der von den meisten Steps konsumiert wird.


Beispiel wo der CacheMode nichts bringt: Angenommen du hast einen Mapper der von nur einem CSVWriter konsumiert wird. Dann bringt der CacheMode nichts, da sowieso alles einmal durchlaufen wird. Hast du zusätzlich nochmal einen weiteren CSVWriter dann bringts schon was. Der 2. CSVWriter sollte dann exorbitant schneller sein, da das Ergebnis gecached vorliegt.


Zu den "komischen gleichen" Zeitstempeln:

Das ist etwas schwerer zu erklären: Die Mapper werden sog. "lazy" verarbeitet (Performancegründe). D.h. ein Mapper (und auch Filter) wird erst dann ausgeführt, wenn ihn jemand konsumiert - also wenn er auch gebraucht wird z.B. durch einen CSVWriter.
D.h. ein Mapper allein ohne konsumierenden CSVWriter macht nichts - gar nichts - er ist in 0sek ausgeführt. Er ist nur da und man sieht evtl. die Logausgabe "Start Processing". Aber er leistet keine "Arbeit". Das hat aber den "komischen" Effekt, dass die Logausgabe im Mapper (bei dir 20:49) erst geschrieben wird, wenn eigentlich der nächste "konsumierende" Step fertig ist und den Mapper einmal komplett durchgerattert hat.


Lange Rede...

Also wenn du jetzt mehr Datenzeilen hast und auch viel mit Querverweisen machst, dann könnte es schon länger dauern. Wieviele Zeilen ergeben sich denn durch 1811 Aufträge + Positionen? Sind das die 3801 Zeilen? Das ist eigentlich nicht viel und selbst mit ein paar Querverweisen sollte das kein Problem sein.
Wir vermuten eher, dass du leider wirklich auf einem überlasteten Server lagst. Sag bitte mal Bescheid, wie der nächste Run aussieht.





Ja ich würde auch den Node vermuten.

Der heftigste Durchlauf waren die genannten 51 Minuten, das war die af75540a-75d4-11ea-b26c-901b0ea49fee

Dann hatte ich in Step 4 den Cache angeschalten, das hat dann noch 13 Minuten gedauert: b7d96b27-75de-11ea-b26c-901b0ea49fee

Und dann hat es sich komplett gefangen, ich bin jetzt bei ~3 Minuten pro Durchlauf. Sowas in der Größenordnung hätte ich auch erwartet (es sind 25482 Zeilen aus den Aufträgen). Alles gut jetzt also =)

Habt ein schönes Wochenende,

Grüße Daniel