From c7af8b202205c05cac3b69d0d4c086a88cf66b6f Mon Sep 17 00:00:00 2001 From: deng Date: Wed, 29 Mar 2023 08:45:56 +0800 Subject: [PATCH] init --- .gitignore | 1 + .prefectignore | 2 + README.md | 25 ++++++ build_flow.py | 82 ++++++++++++++++++ docker-compose.yaml | 71 +++++++++++++++ env/Dockerfile | 6 ++ env/build_infra.sh | 8 ++ .../buckets/.bloomcycle.bin/xl.meta | Bin 0 -> 741 bytes .../buckets/.usage-cache.bin/xl.meta | Bin 0 -> 627 bytes .../.minio.sys/buckets/.usage.json/xl.meta | Bin 0 -> 1318 bytes .../prefect-deployment/.metadata.bin/xl.meta | Bin 0 -> 1023 bytes .../.usage-cache.bin/xl.meta | Bin 0 -> 630 bytes .../.minio.sys/config/config.json/xl.meta | Bin 0 -> 8358 bytes .../.minio.sys/config/iam/format.json/xl.meta | Bin 0 -> 432 bytes .../identity.json/xl.meta | Bin 0 -> 894 bytes service/minio/.minio.sys/format.json | 1 + service/minio/.minio.sys/pool.bin/xl.meta | Bin 0 -> 477 bytes .../test_prefect/.gitignore/xl.meta | Bin 0 -> 390 bytes .../test_prefect/.prefectignore/xl.meta | Bin 0 -> 449 bytes .../test_prefect/README.md/xl.meta | Bin 0 -> 1044 bytes .../test_prefect/build_flow.py/xl.meta | Bin 0 -> 2585 bytes .../test_prefect/env/Dockerfile/xl.meta | Bin 0 -> 514 bytes .../test_prefect/env/build_infra.sh/xl.meta | Bin 0 -> 592 bytes .../test_prefect/test_asyncio.py/xl.meta | Bin 0 -> 610 bytes .../test_prefect-deployment.yaml/xl.meta | Bin 0 -> 2177 bytes service/prefect/memo_store.toml | 1 + service/prefect/prefect.db | Bin 0 -> 798720 bytes test_asyncio.py | 15 ++++ test_prefect-deployment.yaml | 70 +++++++++++++++ 29 files changed, 282 insertions(+) create mode 100644 .gitignore create mode 100644 .prefectignore create mode 100644 README.md create mode 100644 build_flow.py create mode 100644 docker-compose.yaml create mode 100644 env/Dockerfile create mode 100755 env/build_infra.sh create mode 100644 service/minio/.minio.sys/buckets/.bloomcycle.bin/xl.meta create mode 100644 service/minio/.minio.sys/buckets/.usage-cache.bin/xl.meta create mode 100644 service/minio/.minio.sys/buckets/.usage.json/xl.meta create mode 100644 service/minio/.minio.sys/buckets/prefect-deployment/.metadata.bin/xl.meta create mode 100644 service/minio/.minio.sys/buckets/prefect-deployment/.usage-cache.bin/xl.meta create mode 100644 service/minio/.minio.sys/config/config.json/xl.meta create mode 100644 service/minio/.minio.sys/config/iam/format.json/xl.meta create mode 100644 service/minio/.minio.sys/config/iam/sts/WUYXZEOZV3475NY440O7/identity.json/xl.meta create mode 100644 service/minio/.minio.sys/format.json create mode 100644 service/minio/.minio.sys/pool.bin/xl.meta create mode 100644 service/minio/prefect-deployment/test_prefect/.gitignore/xl.meta create mode 100644 service/minio/prefect-deployment/test_prefect/.prefectignore/xl.meta create mode 100644 service/minio/prefect-deployment/test_prefect/README.md/xl.meta create mode 100644 service/minio/prefect-deployment/test_prefect/build_flow.py/xl.meta create mode 100644 service/minio/prefect-deployment/test_prefect/env/Dockerfile/xl.meta create mode 100644 service/minio/prefect-deployment/test_prefect/env/build_infra.sh/xl.meta create mode 100644 service/minio/prefect-deployment/test_prefect/test_asyncio.py/xl.meta create mode 100644 service/minio/prefect-deployment/test_prefect/test_prefect-deployment.yaml/xl.meta create mode 100644 service/prefect/memo_store.toml create mode 100644 service/prefect/prefect.db create mode 100644 test_asyncio.py create mode 100644 test_prefect-deployment.yaml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..496ee2c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store \ No newline at end of file diff --git a/.prefectignore b/.prefectignore new file mode 100644 index 0000000..786b18c --- /dev/null +++ b/.prefectignore @@ -0,0 +1,2 @@ +service +docker-compose.yaml \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..d6eb066 --- /dev/null +++ b/README.md @@ -0,0 +1,25 @@ +# Abstract + +This is a demo to use [Prefect 2.0](https://github.com/PrefectHQ/prefect) and [Minio](https://github.com/minio/minio) to build a service for data pipeline orchestration🎼 + +# Requirements + +* MacOS 12.5 +* Docker 20.10 + +# Dirs + +* **service** + * House Prefect server data and Minio storage +* **env** + * **prefect.yaml** + * conda env yaml to run this repo + +# Files + +* **docker-compose.yaml** + * a yaml to apply docker-compose to start data pipeline service with basic configuration (run ```docker-compose -f docker-compose.yaml up```) +* **build_flow.py** + * a script to create a small flow and deploy it to the data pipeline server + +###### tags: `Data pipeline` `Object Storage` `Data Engineering` \ No newline at end of file diff --git a/build_flow.py b/build_flow.py new file mode 100644 index 0000000..96a9984 --- /dev/null +++ b/build_flow.py @@ -0,0 +1,82 @@ +# build_flow.py +# +# author: deng +# date : 20230328 + +import time + +from prefect import flow +from prefect import task +from prefect import get_run_logger +from prefect.deployments import Deployment +from prefect.filesystems import RemoteFileSystem +from prefect.infrastructure import DockerContainer +from prefect.task_runners import ConcurrentTaskRunner + + +@task(name='stop_at_floor', + description='moving stage', + retries=0, + retry_delay_seconds=1) +def stop_at_floor(floor: int) -> None: + + logger = get_run_logger() + + logger.info(f'elevator moving to floor {floor}') + time.sleep(floor) + logger.info(f'elevator stops on floor {floor}') + + +@flow(name='elevator', + description='this is a cute elevator', + task_runner=ConcurrentTaskRunner(), + timeout_seconds=60) +def elevator(): + for floor in range(5, 0, -1): + stop_at_floor.submit(floor) + + +def build_deployment() -> None: + """ Deploy flow to docker-based Prefect server """ + + infra_block = DockerContainer( + image='test_prefect:20230328-1712', + image_pull_policy='IF_NOT_PRESENT', + auto_remove=True, + networks=['prefect'], + env={ + 'USE_SSL': False, + 'AWS_ACCESS_KEY_ID': 'root', + 'AWS_SECRET_ACCESS_KEY': 'minio_password', + 'ENDPOINT_URL': 'http://127.0.0.1:9000' + } + ) + + storage_block = RemoteFileSystem( + basepath='s3://prefect-deployment/test_prefect', + settings={ + 'use_ssl': False, + 'key': 'root', + 'secret': 'minio_password', + 'client_kwargs': {'endpoint_url': 'http://127.0.0.1:9000'} + } + ) + + infra_block.save('test-prefect-infra', overwrite=True) + storage_block.save('test-prefect-storage', overwrite=True) + + deployment = Deployment.build_from_flow( + flow=elevator, + name='test_prefect', + output='test_prefect-deployment.yaml', + tags=['test_prefect'], + work_queue_name='default', + parameters={}, + infrastructure=infra_block, + storage=storage_block + ) + + deployment.apply() + +if __name__ == '__main__': + build_deployment() \ No newline at end of file diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..7bef743 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,71 @@ +version: '3.7' + +networks: + prefect: + name: prefect + +services: + minio: + image: minio/minio:latest + restart: always + environment: + MINIO_ROOT_USER: root + MINIO_ROOT_PASSWORD: minio_password + ports: + - 9000:9000 + - 9001:9001 + volumes: + - ~/python/test_prefect/service/minio:/data + command: + - server + - --console-address + - :9001 + - /data + networks: + - prefect + + prefect-server: + image: prefecthq/prefect:2.8.7-python3.10 + restart: always + ports: + - 4200:4200 + volumes: + - ~/python/test_prefect/service/prefect:/root/.prefect + healthcheck: + test: ["CMD", "curl", "-f", "http://0.0.0.0:4200"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 20s + command: bash -c "apt update && apt install -y curl && prefect orion start" + depends_on: + minio: + condition: service_started + environment: + PREFECT_DEBUG_MODE: 'True' + PREFECT_ORION_API_HOST: 0.0.0.0 + PREFECT_ORION_API_PORT: 4200 + PREFECT_API_URL: http://127.0.0.1:4200/api + networks: + - prefect + + prefect-agent: + image: prefecthq/prefect:2.8.7-python3.10 + restart: always + volumes: + - /var/run/docker.sock:/var/run/docker.sock + command: + - prefect + - agent + - start + - -q + - default + depends_on: + prefect-server: + condition: service_started + environment: + PREFECT_API_URL: http://prefect-server:4200/api + PREFECT_LOGGING_LEVEL: DEBUG + DOCKER_HOST: unix://var/run/docker.sock + networks: + - prefect \ No newline at end of file diff --git a/env/Dockerfile b/env/Dockerfile new file mode 100644 index 0000000..037b43a --- /dev/null +++ b/env/Dockerfile @@ -0,0 +1,6 @@ +FROM python:3.10-slim + +WORKDIR /prefect + +RUN pip install s3fs +RUN pip install prefect==2.8.7 \ No newline at end of file diff --git a/env/build_infra.sh b/env/build_infra.sh new file mode 100755 index 0000000..b5c49dd --- /dev/null +++ b/env/build_infra.sh @@ -0,0 +1,8 @@ +#!/bin/bash +# build_infra.sh +# +# author: deng +# date : 20230328 + +buildtime=$(date +"%Y%m%d-%H%M") +docker build --no-cache -f Dockerfile -t test_prefect:${buildtime} . \ No newline at end of file diff --git a/service/minio/.minio.sys/buckets/.bloomcycle.bin/xl.meta b/service/minio/.minio.sys/buckets/.bloomcycle.bin/xl.meta new file mode 100644 index 0000000000000000000000000000000000000000..d272ec2f54bb1455a049cc0f6751986d602db37a GIT binary patch literal 741 zcma#>F;ZY;U}iYRz`$6>#Kd?+W$Ff%vM_3pdKdxhBJId(QydC08ke}ZWELF}Fj23b!CT}ybN}R&qdA`6<}PzhcFal7XI$)> z>+9Aykyj&zb5fo2a|?1(fwFfP1mFtV=II~b?T+ByGWsSE1?RSl>0e{}gy04l9zMMr!R<4M zy3B>(o-&wfI1SG2U^94T=#1bx8J>T~jNsN8e5*Tx;O;W`>e!9oeluS6JsHmJG&0a> j(?xLe49=#gAh@fH_xmhFaGx0m)=zF;ZY;U}iYRz`$6>#Kd?+W$F3NlY(30A_;p7f-y%aA*}s!V%700%8G$m->ce=BC2^vfMYdBr&+MxN%Q~Zf<5? zX1;D_UP)?EUSbZAk&~I1s+*Enl6Zurq^L9%tTwc`sA&mMPx?&-6U#KCv^1mSwA2(c zQwt-5L}Sx5lT>pfGo#c*3o`?QHOcuvv+_!GOMqdtBe9?$Co?&*Br`uxKR>x7wM4hL zq$o8pcVXGN6gf%eb7>9tmohdk$t%stIr6ARank&gzmCT3dR24jvV2nPT#Jj@tDg2r zRn+Z18FB2|OLmQ|`hQs%ma;OKa5XLQ%uCB}S>l(No4QbcrC(}AiF0LgPU>0ayQ_Q> zi%UWafL=&F&ch0d&lKe@CBq}dJgbAVGYdRY6MUF3{;6i;^=YEGn+LDBQj%znEiDSuw-n;;Q25Y)s(9v8XI#ItL_~EGjB)Tv*bu qF!|6z{dS+ literal 0 HcmV?d00001 diff --git a/service/minio/.minio.sys/buckets/.usage.json/xl.meta b/service/minio/.minio.sys/buckets/.usage.json/xl.meta new file mode 100644 index 0000000000000000000000000000000000000000..67165343022bdb421e2ab262481827a815d028d0 GIT binary patch literal 1318 zcmah|&rj1(9B&4nJs5BL56Icqt}By)zC-ig_w)UJzMuDfpWYl{dPpKb zY!L*hpEyC*d!N<2h(l|)d+hzSU{Lx}?^xJ6|C>CyNha>s#F;W8SI3#r{KR+S^ovxo zy|9){s%E|GOy$YS_NBqjr)S0bkKx_@m%JR;iUzsD%W3B$5No`g$f|eHX973Jhm@|M zX%gopRm+|y*9Wqdl3TJq22ES2l&pF3m9ynVShPO4Tc_Td-wE7(?ErEASaWtbyqXr( z67uh|mPR(r&RBErrb8uFSB;RW+sM?RhBun3qmTk^SnsgS3UYIEmU*v+Yl>fc`Vmy3 zVOZ!dAO%v92;EFaYN$4T5|{zKwih+7IL`SVWD)Sx`1n0k;n+n8TPU z;aLD~7Fg{~#*nV4daaA1 zny}T1qDX#{^q29C4w(h>KwjejO8Qf>D}jLz@^)9fn-0 zMn9JVaF}&4!^cHFBZ)(CL2BU};j`IBu%Q!heO3SM$33$gb1#Z&bfNHaoA}aOkV8PT z;;%5{Mcb9qK6f@H436;9IG@R;Mg=!BCwM15iM@?wA7^gQ5l7mg=@$G`c($!pF_q_U K_gNdBul@n_j=8-6 literal 0 HcmV?d00001 diff --git a/service/minio/.minio.sys/buckets/prefect-deployment/.metadata.bin/xl.meta b/service/minio/.minio.sys/buckets/prefect-deployment/.metadata.bin/xl.meta new file mode 100644 index 0000000000000000000000000000000000000000..746691d2cf18b13d2291500f76a007efe91d2bf6 GIT binary patch literal 1023 zcmZ`%Pe>F|7=LfqvZ8|>LV^g3I>n&7iKE?CcMjU_YV9hX#J6wW4lifkOfzrAjV{_H zq7FvgBFM%xlN2+{{y@~INFivaE)sO~6rDoC-mD_y+P=f%d*Ao_{`|h*>rO;#AP9p+ z0APP81iiBlyed#~zEyYJu0Qf<>bzI+`Qh(ccyIx>-E=bri@?#YXnXeRIyg4c8sDGj z#^coXswS2X^;EPecjj)$1E;@SJoi+=F|W zoH~3Mj<=-qMlof)1KB*4H=JSk%r}(`(wvV))6aK?S3}7OKM>n}y1pgcqsa_4$S#+$ zB;hDsa0cHGNCsuplqloGW=I!?P8pF@#F1CQ?K~-BI~{w-6*=1Xng%S_$pl@9)Mpzb zIESK5vRoIi_lh_os7?-%%(Hmr0I>m@nlhvA-6D~R2Cdhc)zoMQx5nlOl zcW4L>x-75j3n4>VoA_I~QFm>*cip^y@{;^xb9%8i{PkXa^+u07@^cdc2-d-IH-!u` zW7#A}Fqc$f>1M$YEyr3!X-?FoqX&Ey)iW>tRL-nUK2MmqPhlvl6ZO+{hbaasw3sYM zwYGG7$^)-bCa1ZbDYpaN$%F@H5>zxOV4Vb=nUk|46T!^SF=j46-%ConXSd|3rM1cPIu~cUnSSqQY^wyHO9~)E!5;eBTZUJD!Nf8^CrpD_v6hZB-v=9 zkWx?#A};)q*Q>4{?eE!#JQ|atDp%r>zf%IB!lM&GF^xY1Hk>s+MZigp z>AWJLd9LaS#^nu5bqeY<5SK}wo9jS61f%5b2JHAreg(8@9b#;=H9Cl0m;E78#+z9x zeoSF7MKZ6Gc3D(J)h;R&>k5<@kVFOB1xR7Di|TQ_p`9jr)?l9KYQKQdQDNAPB7+dR z!$aZ7k+2)NhH%7r%!Sgz6Z|g+yD}yUW}j zF-k2iV<>S+YJOdtS-&*9=sdf-K3>_wS#yW#FB)#ywE6&_xdts;?`;`)>GZE2 z7`Ck8QzGhBBLHPQujx2~5w#0glhl;V=FbIil6q1|!k^4*wFyY*w8m254?UL77YqAm z_YKy5iI0L8MQt2ImO9!fdmxJ8Y_5o6`9%lCgq|ysG$^VB6cYrLNSfScC{{p?8K$|x y$d&CmMt56H-9?>b3iNUTy|aPy-2*%Oc)uxeczFpf++6A#sq(h#rk~I5B>n=G)$wuw literal 0 HcmV?d00001 diff --git a/service/minio/.minio.sys/config/config.json/xl.meta b/service/minio/.minio.sys/config/config.json/xl.meta new file mode 100644 index 0000000000000000000000000000000000000000..3cc42c4a41af894b24598dc90e4cc68d4fd427bb GIT binary patch literal 8358 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 literal 0 HcmV?d00001 diff --git a/service/minio/.minio.sys/config/iam/sts/WUYXZEOZV3475NY440O7/identity.json/xl.meta b/service/minio/.minio.sys/config/iam/sts/WUYXZEOZV3475NY440O7/identity.json/xl.meta new file mode 100644 index 0000000000000000000000000000000000000000..265a86e6e6bd6afc80dd26276ff17a4238007a29 GIT binary patch literal 894 zcmZWn&5PSc6t^}XkW&*Vgr<-LQ5tC1i7d&VH(S!~%C_X)wJck{l<{cnowY2v8p&TF zflWyc?Pd4SYoUqL-G)H=2L#%KQ+i1tA8aX<91;lm146U8W#olG+c^yHz4?9c-kV05 zKhMOD#D0&(7}2de=jrLy`>oGkULdohjF&rLjz3@u-%O2hA2GL0zS7!! z9y@hYmH$ti$};w6C-?Ucw#$DMtnbR_e*L2H@WxLH%sU;AxurlYy7btt0t;0FyfP)$IP=k(L?@2I*lS) zzO5O!hd%VOtDyi?$7JjNDBi;^_TtzLknaMA1`c*n+y()d9S!^t&9OD&Uz<`+=dbf9 z$#G&@XlGJiWR0DJDGP2#yf4j$QO zKRNQK{chnZvo&=?$9cfK`SXYFiC5g~V=w>t=sGb<>u)~|?)@#CdEtJX{#G=$rOWI9 z`Gjh)xx^w1ePmMu3>?DdF0%kaL`VsZ*&JK1S&gPrX_|tVPU@B@a+Nf@$Pz?3!65`} zOi;MIq<*Pe)zB=26Hx9es5TJ*5W3EknGMj}(g>musRqH%GfwG43u7uDLN zHqx+4RChfIB{ijX`wdenW-mq{i`N|}=;dak8-W|9=~(ryxmtIui7vy0;dD7&F0ATf zD$p~PkX*!jv@q1f)2Qgx}_a#uZoe%!4!f}Tx7t>-kn@I49RFl2(9^iN}v;Y7A literal 0 HcmV?d00001 diff --git a/service/minio/.minio.sys/format.json b/service/minio/.minio.sys/format.json new file mode 100644 index 0000000..f3f8e9d --- /dev/null +++ b/service/minio/.minio.sys/format.json @@ -0,0 +1 @@ +{"version":"1","format":"xl-single","id":"d3e5292e-7b32-44b2-b4ec-545e359fc2db","xl":{"version":"3","this":"88e54d68-0e10-4257-825d-eab6afe6bf5c","sets":[["88e54d68-0e10-4257-825d-eab6afe6bf5c"]],"distributionAlgo":"SIPMOD+PARITY"}} \ No newline at end of file diff --git a/service/minio/.minio.sys/pool.bin/xl.meta b/service/minio/.minio.sys/pool.bin/xl.meta new file mode 100644 index 0000000000000000000000000000000000000000..efbcd70a6d1cd96e8c5f0985e2ff7a31b7ff302a GIT binary patch literal 477 zcma#>F;ZY;U}iYRz`$6*#Kd?+W$F+$t*e|P(AO(G^eFs%u7kFU<9gj$t*6J$hg8exHK26Wko<@QHft^Zt+CM zl^~{TNMd^N0WcG!zj&h2Dv+=vl(Pgx8!hz>$;?fK`(n9oYDr>nWpU%43fCENot91aY<2X zV(!ASb18C?%;%OfZ2!*KxFoMMC+A4e)>m#eP0V*inq1C>wd-vZ&}mQ;92gp#VM)D F2LRgYtvvt$ literal 0 HcmV?d00001 diff --git a/service/minio/prefect-deployment/test_prefect/.gitignore/xl.meta b/service/minio/prefect-deployment/test_prefect/.gitignore/xl.meta new file mode 100644 index 0000000000000000000000000000000000000000..03b01f638b7c1a57a9e8cd3996bea5337aa702ca GIT binary patch literal 390 zcma#>F;ZY;U}iYRz`&Tz#Kd?+W$FmGyPB2O1gjZ0iyGK-D~RR6NvE5PpcciO9SS3j6VtY7Au?3k0D&$!q% z*%w6kF)VjYb_&j{O1;DYv>eFs%u7kFU<9gj$t*6J$hg8exHK26Wko<@QHft^Zt+CM zl^~{TNMd^N0WcG!zjz|UDv+=vl(PgxGc5HD$;?fK`(n9oYDr>nWpU%43fF;ZY;U}iYRz`&Tz#Kd?+W$F+$t*e|;C(XAJuS~EYSE|fteP**+AecVcFal7XI$)> z>G(UUS_^- zW?o5ZQC?yWkdc#_m#UkRSdw^zrKG4d6|6S2xTtAOaz0Q|UWslA(A%4nGV>CPD)sY| zOHxa8i%W`96LXgU4NbqPV3=l}YHVbdlxA#hZjq8?Xl{~XVq%e$mS~)0Xl$Bjvasx2 ziku|#xzCA{LKqvD+9I?*3zHZN|H|>v|W=@d#@{{45Vb%tA-TV0kVPW#C(t64k g6{i-JWhSR`rQ|1PrxxiZ=jRsW7pLk~Cg$b<0PEwYmH+?% literal 0 HcmV?d00001 diff --git a/service/minio/prefect-deployment/test_prefect/README.md/xl.meta b/service/minio/prefect-deployment/test_prefect/README.md/xl.meta new file mode 100644 index 0000000000000000000000000000000000000000..b5c8b5ee01e82184feb4676b46883079f40375eb GIT binary patch literal 1044 zcmZuwO-vI(6z&$HN%epyH6;2X9$=IHLR-SE*eXN|NUJd+#7?)yP#)kLsj5@mR1d&9tH`&{r?2X2I66JU_*%OIJ5?UPf6ywS6Xyo?fYU#lKmer3t z&mL5!YnE#m%l<2~YY$SRKi~HsT7T9~W;e!P@!^}tj=!Av@O(opEW{soK&mLpAdLqC z`3hkmJ_IFf+Q4ma8HTYDipyBz5DP`dJ1d+!tS=na39q=tkY=0V#{Iy_u(OHm0%Vn7 zEGrfGZ-l2!*xS2gnW9UKk|@hCog^BDvQ0rM1rBkr)D3K^Rj}-n6WjWJ>-y_JpaVwn zgi9zkg?KCwP$7%7;T%L`p}07tZS6d!5Q~JO5eXJk@s@R%rM5=0oZ>Wk)!*j}n;yFtQ1Pr8G(xa{gTxv_PW6NHS5(77y zDS2%Mg^rHR@b65jkYg(zIgU|7%Q6t>$6ReLHY#HAWFNb5+kV>{%}(gGoNM3lz0Vh0MS8clY`&XV1o?aZtb z6Xj5Pg9DV(69@@N+q7yWq;lYZ3P>pzq)Nbv3lieM0de4f)FW?p*XwnDge`f0-kbN{ zeBbxp_~Q98%4SYxe#m698z)X=_n*75eaOyVa`A_s_g>_RH2++pm28@cP4hPxNme+^U&#PKRZ` zsF};^r=Gc8Ghc4nZ_}SMkQ^QsJ&SH-!LMoyc`ds)-wfPv$zFqSSr1%sEqh1Z)>@<^ zz6)>FdU5Ti)BLV7%q5Sz>JDDtTyEJeP4;qonM%^^i7Vf1E;}SBrz8((=({TTJNHZmPM*w5*!+D-x8(R%-tWnE=Iuhb&aY@CS@*GZ_Sut-X{~mpI7gXUEh9U zTzs%}>z}3ff4o%vVDY2O-Mt&XH%8D}U^^CWJ8ZMy_p}jh1d#yJ@(Qx3*MUczL9}QzFH57zHsUIbd-bR@Y zg;IqI#Joe105gcX8DrK@oq#a}mt41j0D%ZH1CZz;=M+)KQ3T~i`;e;ISs)WQr-~7t z{gAoQO1Q^1pb+id_7Epthvp{7P;m_9OR1hUND$y|g}ThI5kW1~h@-lbfviP#Gzjn^FT1%|7`QqIM?Lm+ifnW0N6 zB#zs+(r@v6X}VNSK#zT~4*bFVe=-28m4*~Ck= z*YRQ%{B+KkOcj$jHf!@MwN}bsIfv63`$Pz+%R0EMRY$L z=|T~{rOIrvSk#k>cfz|!^(hJpf^=yvggGDW8cqS2IrBoBWM+uX^@AIIt;VS#}3CKJpf9zNpheR;sX(m zweVCN0Is^w=#PYfaHH{l4AwAJ{6G%3S&E`UkGM{X8kqd5J%)m%dPKDkz8uhi;wUQ& zeG)in#ruTAaRdK1fZm-!k)h_2bIwQ!bl?-?Wefout2(?45GxShcY5l)u-gcS#bAsK S1L+vMaAsnxM-%h#r27xo*g^9E literal 0 HcmV?d00001 diff --git a/service/minio/prefect-deployment/test_prefect/env/Dockerfile/xl.meta b/service/minio/prefect-deployment/test_prefect/env/Dockerfile/xl.meta new file mode 100644 index 0000000000000000000000000000000000000000..907e2df2ed17713d8e42f8ee3f264b501646e93c GIT binary patch literal 514 zcma#>F;ZY;U}iYRz`&Tz#Kd?+W$F+$t*e|@Kox~oilZw4Bao5Mz8+z{_ir^WXGKJe8$DD z$-W@Mk72oMvQuzoRq7=Mpyfc0XI@Hb1tUNi%R@TbBiZ3 zt^_e%LlV=A4}h5<{lybwR)K^ap`0ZkI%cVFNM>#-+!xDzQ%e$qD~lWVROser=4IyV zX6BWo7Ud=802w)%d8xW7i6x0gSW1dYQ^9IOi;J3;0QIEbR4_0#u}HK`Gcid^GfOqH zFikZ#wKPmiO-xKoNi{Y|FT*UM7IPOI-8R+^Ad|H_4AWUQcHA;ONvqxa~GDK zOOcagK37tzaE-BXNnUAA&XJlaUlLn|o=;v~9Xrbiz_J9PoW^QKp``) ZxFj(rN1@m_tr$ZPs@m4pNY6sg900BazA^v+ literal 0 HcmV?d00001 diff --git a/service/minio/prefect-deployment/test_prefect/env/build_infra.sh/xl.meta b/service/minio/prefect-deployment/test_prefect/env/build_infra.sh/xl.meta new file mode 100644 index 0000000000000000000000000000000000000000..1e82cc315cea868e4ac3cc087a0aa0d32f0f03cf GIT binary patch literal 592 zcma#>F;ZY;U}iYRz`&Tt#Kd?+W$F+$t*e|@cRA2tt&sc&0VB^@eOg_rtG(U zUS_^-W?o5ZQC?yWkdc#_m#UkRSdw^zrKG4d6|6S2xTtAOaz0Q|UWslA(DNG-3kq^F zlM_oa^Yip8bc-{V08LE4sgP=xmXeZaW}awhW|?GYnV4o|U}2P;YLb|2YG`R}X0)*E zT#B3|^SSd+_B%5+F3Bs+$vJX-de5#R%i9-u-$qHDm>KJ`T!_D$XXfMfn~6)e9guuG ziUu30_lA4ze=r1>H0S7qC=XW)6^7qEM1rToPYUl$w^BTwF;ZY;U}iYRz`&Tz#Kd?+W$Fg$(VMhK*S@#$O7kRp1YFy&tl38>_AVS9TKH~{L-o}zP$9k694a;1U9dpw285g@I z`+^8RhUKowPQjT~sh1dlmIFDSc`2zCj6iiRnZ+d&8CN(5m*#@CtO!UfD)B4LEuP4@ z62x>3NlY(30A_;p7f-y%uxAxW!V%700%8G$m->ce=BC2^vfMYdBr&+MxN%Q~Zf<5? zX1;D_UP)?EUSbZAk&~I1s+*Enl6Zurq^L9%tTwc`sA&mMPx?&-O9PYSG$W%FbCX0v z6N^-1%jD#=B*PRla|`oi)08yJHOcuvv+_!GOMqdtwj{NpM886}pt2+*KW|~#xfD4` z=5y)o26BvzOY%x{a*o`&f4Ez*=+q(gvj?KsZTw&TW9VMm@jyCkv#scwl#PqmK2TOD zNi8mkPb{v?OU}&KE2!jB=2BKjECm`^WTlXjnwJjb0-c+xpkSq7WME`$U~FW;#g&;` zkY7}y0M*9D#RX;o)u$=sCT8YoXj*Y806}7TVkTUbUU5!pYJrBKCRnPV2pA|D>KUmy tIr-|EKoc_46yoFa5_41I;}vXe71ZP7K_56dWk%$Kyi5KWD&Vo1-~{G@=EpgYOhGkklUM>%Wjd1E7d#d(d*-Z__};l@#4zE zqu+h57FOo3JL(C{H%|3wO6I-XIz=Szjm71A7qygTlxZ}Rgl9N`hlFNCi?GDIM3c@-_r3@jIAv0k(EQziW|)tcStyCrgyaOLJCJnnJ;IjlgtpzV0z0ytFle^y&~jRV zdEJG|t7;SPAlTe~I$rCnCVXr7= z9K{LSMvEjNBPo5z@~mQMEnkU}Z=Jf-gp40i|ZawGrV0>ba<1C#DfJ zjM!=E@G;=ovGt&38nI;smQhF05pj<6c zd48|A?xMvtoCva58duKt{FT*Juh;WWdawJPwu?Apa=zB{R!@8VJuWUPmG9?R2!K2) zJ-u#wbEDJk`)5u={-Kn)yS!{P%_XC`q%Rq+15|@!f&-FF5J6}{Qi&x};)FJ%X?FG}qKkOSjCHW;6{GvXwr54rKT_OK3QDQD@Buc>T@OUeD|H=RTYaU?y;In3l_k zRB{2%5z^31$*`x1-A`FG;~61bNak~r0;N-m5gM_iNENwnya_2L=h$b3%nLd9Nl7ZU zaqcHHrC^`H(z%o?N&ACPuwlW@xliPId0lRD;_ZfRz#uRE^cxD9KmX;}@u@v^SFy1rQZ E8?5o=X8-^I literal 0 HcmV?d00001 diff --git a/service/prefect/memo_store.toml b/service/prefect/memo_store.toml new file mode 100644 index 0000000..e87622b --- /dev/null +++ b/service/prefect/memo_store.toml @@ -0,0 +1 @@ +block_auto_registration = "0016c72a6d80786d0b6c25d0bf5fed0752a58b96c7b3643cd9c27c2b250c6a75" diff --git a/service/prefect/prefect.db b/service/prefect/prefect.db new file mode 100644 index 0000000000000000000000000000000000000000..40eeb20e2136897f8c0cdd32e01ced723cb20f36 GIT binary patch literal 798720 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 Z=l`!&`c3BAYmmyx;yHp;LWTPG{{zpfsc`@R literal 0 HcmV?d00001 diff --git a/test_asyncio.py b/test_asyncio.py new file mode 100644 index 0000000..56c09de --- /dev/null +++ b/test_asyncio.py @@ -0,0 +1,15 @@ +# test_asyncio.py +# +# author: deng +# date : 20230328 + +import asyncio + + +async def main(): + await asyncio.sleep(1) + print('hello') + + +if __name__ == '__main__': + asyncio.run(main()) \ No newline at end of file diff --git a/test_prefect-deployment.yaml b/test_prefect-deployment.yaml new file mode 100644 index 0000000..a79dc74 --- /dev/null +++ b/test_prefect-deployment.yaml @@ -0,0 +1,70 @@ +### +### A complete description of a Prefect Deployment for flow 'elevator' +### +name: test_prefect +description: this is a cute elevator +version: 44e21b51f98000011b5960b821f33b31 +# The work queue that will handle this deployment's runs +work_queue_name: default +work_pool_name: default-agent-pool +tags: +- test_prefect +parameters: {} +schedule: null +is_schedule_active: true +infra_overrides: {} + +### +### DO NOT EDIT BELOW THIS LINE +### +flow_name: elevator +manifest_path: null +infrastructure: + type: docker-container + env: + USE_SSL: 'False' + AWS_ACCESS_KEY_ID: root + AWS_SECRET_ACCESS_KEY: minio_password + ENDPOINT_URL: http://127.0.0.1:9000 + labels: {} + name: null + command: null + image: test_prefect:20230328-1712 + image_pull_policy: IF_NOT_PRESENT + image_registry: null + networks: + - prefect + network_mode: null + auto_remove: true + volumes: [] + stream_output: true + memswap_limit: null + mem_limit: null + privileged: false + _is_anonymous: false + _block_document_name: test-prefec-infra + _block_document_id: c0336aea-3d1e-4c77-b2fe-66e53263a1cc + block_type_slug: docker-container + _block_type_slug: docker-container +storage: + basepath: s3://prefect-deployment/test_prefect + settings: + use_ssl: false + key: root + secret: minio_password + client_kwargs: + endpoint_url: http://127.0.0.1:9000 + _is_anonymous: false + _block_document_name: test-prefect-storage + _block_document_id: 9d763296-4114-4a72-8fa7-c9c7c2464b9c + block_type_slug: remote-file-system + _block_type_slug: remote-file-system +path: null +entrypoint: build_flow.py:elevator +parameter_openapi_schema: + title: Parameters + type: object + properties: {} + required: null + definitions: null +timestamp: '2023-03-28T09:22:52.437835+00:00'