Airflow eða Prefect: einfaldari Python-kóði færir ekki allan reksturinn

|Höfundur: Ritstjórn QUASA|6 mín. lestur
Airflow eða Prefect: einfaldari Python-kóði færir ekki allan reksturinn

Prefect er einföld leið til að hefja Python-verkflæði, en styttri skilgreining þess leysir ekki rekstur reglulegra ETL-, ML- eða AI-keyrslna. Samkvæmt leiðbeiningum Prefect um verkflæði verður venjulegt fall að flæði með @flow og má keyra með beinu fallakalli. Tímasetning, endurkeyrsla og aðgangur að vinnsluafli bætast við þegar verkið á að ganga án þess að höfundur ræsi það sjálfur.

Airflow hentar einkum vel þegar teymið vinnur afmarkaðar gagnalotur og þarf að tengja niðurstöðu við tiltekið tímabil. Skjöl Airflow um Dag lýsa verkefnum, innbyrðis röð þeirra, tímaáætlun og keyrslum fyrir eldri gagnatímabil. Kostnaðurinn við það skipulag kemur fyrr fram: teymið þarf að útvega og reka umhverfið sem tekur við Dag-skilgreiningunni.

Sama gagnaverk í báðum kerfum

Sama þriggja þrepa ETL-verk skilgreint sem Dag í Airflow og flæði í Prefect.

Hugsum okkur skilyrt dæmi: gagnaskrá berst daglega, ferlið sækir hana, sannreynir nauðsynlega dálka og skrifar samþykktar færslur í töflu fyrir síðari líkanavinnslu. Stundum berst skrá utan áætlunar og á þá að ræsa sömu vinnslu við atburð. Í báðum kerfum þurfa inntak, sannprófun og skrifaðgerð að vera þau sömu; annars er verið að bera saman ólík gagnaverk.

Í Airflow myndu þrjú verkefni sitja í Dag með skýrum tengslum og skilgreindri daglegri keyrslu. Python-föll má merkja með @task, svo munurinn liggur ekki í því að Airflow útiloki fallamiðaðan kóða. Í Prefect getur @flow-fall kallað á sömu aðgerðir, með @task þar sem hvert skref þarf eigið ástand, endurtilraun eða tímamörk. Venjuleg Python-skilyrði passa þar eðlilega inn í keyrsluna; í Airflow þarf að lýsa greinun þannig að kerfið geti stýrt verkefnunum rétt.

Fjöldi lína í flæðisskilgreiningu segir aðeins til um hluta vinnunnar. Fyrir þetta dæmi þarf einnig að ákveða hver ræsir daglegu keyrsluna, hvernig óvænt skrá kveikir aðra keyrslu, hvar kóðinn er tiltækur og hvað gerist ef báðar berast samtímis. Hér er borin saman sú uppsetning sem skjölin lýsa, ekki mældur keyrsluhraði eða heildarkostnaður uppsettra kerfa.

Staðbundin keyrsla og leiðin í reglulegan rekstur

Prefect-flæði færist úr beinu Python-kalli yfir í útgáfu fyrir reglulega keyrslu.

Prefect-flæðið má fyrst keyra beint á vél þróunaraðila. Fyrir áætlaða eða atburðakveikta keyrslu þarf hins vegar útgáfu flæðis sem skilgreinir meðal annars keyrsluhátt og tengingu við umhverfi. Skjöl Prefect um útgáfur flæða lýsa tímaáætlunum, atburðakveikjum, langlífu serve-ferli og vinnsluhópum. Beina fallakallið og sjálfvirka keyrslan eru því tvö ólík rekstrarástand sama kóða.

Í dæminu gæti lítið teymi byrjað á beinu kalli og síðar látið serve-ferli taka við daglegri dagskrá. Það ferli þarf að vera í gangi, geta náð til Prefect-þjónustunnar og hafa aðgang að kóða, gagnaskrá og heimildum. Vinnsluhópur hentar betur ef keyrslur þurfa ólík eða tímabundin umhverfi, en þá þarf að ákveða hvernig vinnsluferli tekur við verkum og hvar kóðinn er geymdur.

Airflow gerir annan hluta vinnunnar sýnilegan strax: Dag-skráin þarf að vera aðgengileg uppsetningunni sem les hana og tímasetur keyrslur. dag.test() býður staðbundna prófun án þess að bíða eftir tímaáætlun, en slík prófun kemur ekki í stað reglulegs rekstrar. Fyrir teymi með starfandi Airflow-umhverfi er sá aðskilnaður þegar leystur að hluta; fyrir nýja uppsetningu er hann verulegur hluti fyrsta verkefnisins.

Endurkeyrsla er meira en endurtilraun

Skammvinn tengivilla við niðurhal getur réttlætt sjálfvirka endurtilraun. Öðru máli gegnir ef skrif í lokatöfluna tókust en staðfesting á þeim tapaðist: endurtekið skrif gæti þá tvöfaldað færslur. Hvort kerfi sem er þarf þess vegna skrifaðgerð sem skilar fyrirsjáanlegri niðurstöðu þegar sama skrá eða gagnatímabil er unnið aftur, til dæmis með stöðugu auðkenni lotu og reglum um uppfærslu færslna.

Airflow tengir áætlaða Dag-keyrslu við gagnatímabil og getur stofnað keyrslur fyrir eldri tímabil. Það auðveldar að sjá hvaða dagleg lota á að framleiða hvaða niðurstöðu, en gerir ekki skrifaðgerðina sjálfkrafa örugga fyrir endurtekningu. Í Prefect má senda tímabil eða auðkenni skrár sem færibreytu og ræsa flæðið aftur með sömu gildum. Sveigjanleikinn nýtist óreglulegu inntaki, en teymið þarf sjálft að halda samræmi milli færibreytu, niðurstöðu og reglna um tvíteknar sendingar.

Sama atriði verður áþreifanlegt þegar líkan er þjálfað aftur á eldri gögnum. Skrá þarf hvaða gagnasafn og kóðaútgáfa tilheyrðu hverri keyrslu ef niðurstöðurnar eiga að vera rekjanlegar. Verkflæðisstýringin heldur utan um keyrsluástandið; gagnaval og merking úttaks þurfa að vera hluti af hönnun sjálfs ferlisins.

Biðröð, samhliða vinnsla og tímamörk

Dagleg keyrsla og keyrsla vegna nýrrar skrár geta keppt um sama gagnagrunn eða vinnsluafl. Í Prefect má takmarka samhliða keyrslur útgáfu og láta nýja keyrslu bíða eftir sæti eða fella hana niður. Vinnsluhópar og biðraðir ráða einnig hvaða umhverfi tekur við verkinu. Í Airflow ráða meðal annars framkvæmdaraðferð og tiltækt vinnsluafl hvenær verkefni hefjast; takmarkanir á samhliða vinnslu þarf að stilla með hliðsjón af því kerfi sem skrifað er í.

Tímamörk þarf að skilgreina fyrir rétta hluta ferlisins. Prefect styður timeout_seconds fyrir flæði og verkefni, en samstillt verkefni sem hefur verið sent í þráð getur haldið áfram í lokandi netkalli þar til kallið lýkur. Tímamörk á flæðinu einu sér tryggja því ekki að niðurhalið stöðvist þegar beðið hefur verið of lengi; netkallið þarf sín eigin mörk. Í Airflow þarf sömuleiðis að greina á milli tíma sem verkefni eyðir í biðröð, keyrslutíma verkefnis og þess hve lengi heil gagnalota má taka.

Hvað þarf að halda gangandi?

Aðskildir kerfishlutar Airflow halda utan um tímasetningu, Dag-skilgreiningu og stöðu ETL-keyrslu.

Yfirlit Airflow um kerfishluta telur tímaáætlunarferli, Dag-vinnsluferli, Dag-skrár, API-þjón og lýsigagnagrunn til grunnuppsetningar. Sérstakir vinnuþjónar og ferli fyrir frestuð verkefni ráðast af útfærslunni. Þessir hlutir geta verið á sömu vél, en einhver þarf samt að tryggja að þeir starfi, sjái rétta kóðaútgáfu og geti skráð stöðu keyrslna.

Prefect færir mörkin til. Beint Python-kall er lítið verkefni í þróun, en sjálfvirk keyrsla þarf stýriþjónustu og keyrslustað; serve-ferlið eða viðeigandi vinnsluferli þarf að vera tiltækt þegar verk berst. Stýrð skýjaþjónusta getur tekið rekstur stýrihlutans af teyminu, á meðan aðgangur að eigin gögnum, heimildir og keyrsluumhverfi eru áfram val sem þarf að útfæra. Sá munur vegur oft þyngra en línufjöldi í flæðisfallinu.

Hvað segja samanburðareinkunnir?

Í samanburði datapipelines.com frá júní 2026 eru 487 tilvitnanir um Airflow og 428 um Prefect; Prefect fær 57 gegn 23 fyrir uppsetningu og notkun, en Airflow 50 gegn 25 fyrir gæði skjala. Einkunnirnar byggja á flokkuðum ummælum notenda. Þær mæla hvorki keyrslutíma þessa gagnaverks né vinnu við að halda þjónustum gangandi, svo ekki er hægt að breyta þeim beint í kostnaðaráætlun fyrir teymið.

Fyrir teymi sem þróar breytileg Python-flæði og vill komast fljótt að fyrstu keyrslu er Prefect skynsamlegur kostur ef það hefur jafnframt skýra áætlun um útgáfur, keyrslustað og biðröð. Airflow fellur betur að starfi þar sem dagleg gagnatímabil, afturvirk vinnsla og fyrirliggjandi rekstrarumhverfi skipta mestu. Í skilyrta gagnaverkinu ræður því ekki hvaða skilgreining er styst, heldur hvort teymið getur bæði ræst rétta lotu og endurheimt hana án rangs eða tvítekins úttaks.

Lestu einnig:

Deila:

Gerstu áskrifandi að fréttabréfinu okkar

Fáðu nýjustu fréttir af Web3, gervigreind og rafmyntum beint í pósthólfið.

0