From 4a321b410576636d15aa022cf1e64334d2712ed0 Mon Sep 17 00:00:00 2001 From: Aldarien Date: Wed, 14 Jul 2021 10:11:54 -0400 Subject: [PATCH] Python with Flask --- backend/Py.Dockerfile | 36 +++---------- .../__pycache__/coingecko.cpython-39.pyc | Bin 2938 -> 3279 bytes .../__pycache__/miindicador.cpython-39.pyc | Bin 2435 -> 2787 bytes .../__pycache__/coingecko.cpython-39.pyc | Bin 0 -> 3282 bytes .../crypto/__pycache__/index.cpython-39.pyc | Bin 0 -> 1568 bytes .../__pycache__/miindicador.cpython-39.pyc | Bin 0 -> 2757 bytes backend/python/{ => crypto}/coingecko.py | 0 backend/python/crypto/index.py | 50 ++++++++++++++++++ backend/python/{ => crypto}/miindicador.py | 0 backend/python/environment.yml | 10 ---- backend/python/requirements.txt | 30 ----------- 11 files changed, 56 insertions(+), 70 deletions(-) create mode 100644 backend/python/crypto/__pycache__/coingecko.cpython-39.pyc create mode 100644 backend/python/crypto/__pycache__/index.cpython-39.pyc create mode 100644 backend/python/crypto/__pycache__/miindicador.cpython-39.pyc rename backend/python/{ => crypto}/coingecko.py (100%) create mode 100644 backend/python/crypto/index.py rename backend/python/{ => crypto}/miindicador.py (100%) delete mode 100644 backend/python/environment.yml delete mode 100644 backend/python/requirements.txt diff --git a/backend/Py.Dockerfile b/backend/Py.Dockerfile index e1b44c4..977e524 100644 --- a/backend/Py.Dockerfile +++ b/backend/Py.Dockerfile @@ -1,37 +1,13 @@ -FROM continuumio/miniconda3 as build +FROM python:3.9 as runtime WORKDIR /app/ -COPY ./python/ /app/src/ +COPY ./python/ /app/ -RUN conda env create -f ./src/environment.yml +RUN python -m pip install gunicorn httpx flask -#RUN echo "conda activate cryptos" >> ~/.bashrc -#SHELL ["/bin/bash", "--login", "-c"] +EXPOSE 5001 -RUN conda install -c conda-forge conda-pack +CMD ["gunicorn", "-b", "0.0.0.0:5001", "crypto.index:app"] -RUN conda pack -n cryptos -o /tmp/env.tar && \ - mkdir /venv/ && cd /venv/ && tar xf /tmp/env.tar && \ - rm /tmp/env.tar - -RUN /venv/bin/conda-unpack - - -FROM python:buster as runtime - -WORKDIR /app/ - -COPY ./python/ /app/src/ -COPY ./automation/bin/ /app/bin/ - -COPY --from=build /venv/ /venv/ - -SHELL ["/bin/bash", "-c"] - -RUN pip install pyinstaller - -RUN pyinstaller -F -n coingecko --clean --log-level DEBUG --distpath /app/bin/ /app/src/coingecko.py && \ - pyinstaller -F -n mindicador --clean --log-level DEBUG --distpath /app/bin/ /app/src/miindicador.py - -ENTRYPOINT [ "/bin/bash" ] +#ENTRYPOINT [ "/bin/bash" ] diff --git a/backend/python/__pycache__/coingecko.cpython-39.pyc b/backend/python/__pycache__/coingecko.cpython-39.pyc index 0e7604326e908d5a7819102890bfc62cae6050ea..3f1e05b441298d67f1ff81afd80efba022356fb5 100644 GIT binary patch delta 1485 zcmaJ=&u<$=6rP#=>2>V5j+5ANoUYw8)D#Fsv{a!9h(yZG2P%OSwK9%p?5uIT>FlOO z?wSY%juk|6MaY&o!vTpS{{r{ria78mYoaot~n8 zd$XkKEU7ATqR=agA}1vxRuZg;Dlfgz6N$BR0zxt8hA6`P$_s{ZP9KtbS$$7`pmp^= zyZPZ76dghsCnL(qDUk)vMl_-kX~G!NwZ^ctD@7~x23^-b?1^^h?)u(fU$j5>)ri%K zbru^Z(i?oZQJN8wVC>peM>bJYFl*vm!CD0(pB}V{?3^W)4T8n z>i{Ta3|sfu)ar?sB{Y?Nub4(44#@Ua+uf))ZC4#iXKsM632BLI$4Q`G# z6x9WZNyJJbFq%c|NRtho8Zho)tgAsWMpBF(851@#fg6ztQ7f{>=7j8##~Y6xv5`GW zg;viR+fj~LJpF(?`69BwjZ9-${MU`=Bi9>%0W%}!0`K^wFE*h& zZE;CAF6p+cDbEzEPGXD1{wH0NS!CA{T=j=}H;tai8wl&FY~9J+0vfCW5L#gBQ|s}W z1pbOgTBIjF8B?FYAMl3j-0139Gdja9cee7u?W)#S^t?*UXzBU2dptd-=hApmp4DYB$>Q>6iXR@Yk7INw=_01>4!fvbI7u-A$*|roY$8=0vcyqoHv8h!)bCL_tn?V?T2`E zk~0$PPhl0A!&KJpO1!bjMzIl`^t~|Fn;s96^Ae|W~@Is^+LG-6)&sJ^!&~i%-A$}wCtV(Y>wvOv8e+%2anD240(>`sR_}- I6|TYeA7Zg$oB#j- delta 1081 zcmYjO&u<$=6rMLb``ccpA$GE^o2H?SaHG;TP^dz~uU1GL>I)Kwh&C9{#5i)@Fq^cc zny5k%$BIUCsw#o^0^-5}IC0}2fHT{3ZD){m%ZWG{_pWIYF5*UNQdvYwRcGLa@-@=dfDnE6sfffx&w##%y z!X6kfY=cRLGTyO2^TnEWP}1gw$kcFC3;UFx^E|p4uqT~wK-gcMRjB^*x8ngc?K82m zLI*D6$Yu}>8)Ma+QnN9pƴxf}Iv4o2D8;UL>-bNk5sFkYY|0s%As<96;nK!z;| z$uWb2Lr8aw&F0YOIg}BvjNob#@r|QbWiaA0q*&j<%5GU%7&qs89&&CxjQYkOJ2|_; zt}T7S_kz7}M{J3)YeE^N3@`dsPsTYI-vlX>(IxhUG(NUo>D;YkgB#mJb#_}1dg>6C z4q;87uuWf8eVt&_dY<68edJ$=PY_)sc-cPo&&MZ`W=#Y%nFiOo>&PUaIgYR3NYNM6 zFxiqG4&U(78u7q56CN5du}7A`xM+%_DYEBdj=%)iZPc;L;o^0ws!t&l@vUs5x2v@p z^}Z~`roMSYzlrg-^Z(8%5NekWy-sj};0*%O>KZ{zFhy|A{ua*1D@d~z0vdY~j^gKc zK>G{!dene5yBoa{y3^If3&c!fzmL9N&`Y$xhHwaH^lLb`xt`oud%=a^SAhYrviugbO z1C^DvOK0|-%F!CRD_nfm5uQ+YY`=0kxrng<%HK&Y+3za#6e5_ye;PbwGcRx+=YIhr C$MwAc diff --git a/backend/python/__pycache__/miindicador.cpython-39.pyc b/backend/python/__pycache__/miindicador.cpython-39.pyc index 3a0064297f6e13c412d72e91d9aabca95dc2839d..a4ba59413376b282bb0713fef6ebddbafdc4c22c 100644 GIT binary patch delta 1247 zcmbVL&u<$=6rMLb`@>GXF^&`BHniIxZtH|XTZ*U*RBD4%AzELGfL0*bW;W>>$4+Or z1%(0r(U?Mgw%?P1AjtKeQ!5KLU6(>fAh_c_vU@y+np`^vFL}5 zMxEjB$Ht%Ed{W={SK#^n+GTjUFF(IMFPm92dM)y2ki!gsMI!Qttr^@|khuDgsV6vZ zBhE()SsVEx{+DuIo_&4BFoJfLX{X8{;TG$)42NH!XC6WK>QTHqWwK1KL9z!-wI!c| z2FeV8{*>kGJSV(Uyt^Pxutr?sq(d@iRFVbD8d9$8oBl)&IZ zq*0QZ->vtXD>zL`$Dj^A)Xiye{$pDFTLjBM@*GeC%eY48DhbOs;v@}rCP@zc#s$q1`DlanMi<^y;bcKUZ7X3tA+xrWp=qDQb!AEb=V9(Vqf*YI*xGR2(VN zR=}q(ASmEYsr-f4y?w5`eXc7XADHcIPSkc-wNm*Q;HqPYDlos=*PIhXPnwpqy3|9O zEF&;za{(Up13WWuj=>2tc24d6gj@g9H-Qe?TA+hA`epyaFK6l=_~rhmU$5-iE5o#N z;MYLgm0xea^6MVH5)*~*@rX#mZ?qahza*;F9^vJzH~I4d3;g zmT!)DTOaPW*Tc~$lEHUzdM^moR???lU&8afPT}FgPN=ZwElO~h;7tNf@UD66^`UQ` zduwa-d8t)|LOjHPvdn^S$7LoGQE4c|{RiekZFQAod)R7xEdL6Phw$;R@l6_ei_>S> H1_xdON$VDQ delta 914 zcma)2L2DC16rMLbyV*^fZJMT$6lv4g(59tLZ9TM6REkg#3`hmFC>lCzO>JwOM3FM7 zhj^DT7eNo3W4!qX{0TjH%t`R(9}qliW~Hf$$lGVot8^$E|Th^ZhMjv^n!H{IoJ02Yk586s6O zROteJm9WK%qb3dSp=UlqVKalBG)VTGsbL8%(4g4^CK>+5D@WPK&1St(E|m^yhqAU) zl~2{u&VH#{uPFU4<~m<-9I_4OHSd5h8LJElbJMy5OXh<$I}*B@?|EJ7 z50zrve6uc_RdLauKuyDqlyUIQu~^Qh@uXRZX1nBwh3G00@{01XR^;ZpxG|JN+7JlX z^QOJ=>Ij*JmZdqy0W~2ZWExMq9IvsWYpem|nwV%>T1cK{ZMeqnm+$eG-Ex{@PlUF1 zq?Ki%BZaiP9Ct^?x_D0*lWrGIRoc!nX`atR@Mj%v)!}nI@VyU!3{W4AKS-fq?)Qe2AM|Yzn5$)!5Ac zrWBZ$Yk?_kOlkj>(rLv8DP#Xk8L71MJEgtF)bcs>AO|6Tdyh{Y>Ix( z63i2Df>ra=E5n*uk1yn@eV-rHB4yvMtJ-1nkHx+SUYa-Y`8gV~i?hXL`4?y(#^pjB Ll7rocG&t}JuDrh| diff --git a/backend/python/crypto/__pycache__/coingecko.cpython-39.pyc b/backend/python/crypto/__pycache__/coingecko.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7f4fb9d09b08e57971a18f2a09bf16c512682b95 GIT binary patch literal 3282 zcmaJ@TW{n@6?Xa7?pr#O&2?ro+nL=gw4f6%0ztGai)PRuAp+9w3l_*Yu1exgce|%t zJtSU-2QsfC@dM_eBk{6-sUCRYiN6qW`%XFO&PE7ZRjzaDRMokB=al1iyJ6wk_{QJ< zaNM@6zY}r)se$+mE&mg_+4F_-eKDYzZqnVwtba9*GsvxnkGsis1}bbO!HTv2azaVYEKm;OjIK zZW?-PPCw=wqVw81}SRFhOo7~#6#ADNMiygl8)-@VFyRx7s$$Tg_G5`3jO?=Kiw|YC}>|+`eQbE3F7L>~s!`t>;q2DjlD6v!j7XRCj(%(LGgak{|5v z$CGp~!RaS-Iz}Vn?7#kg&(_{Vreh@?oCV6w#qih=Us=)z?`9LCll??qOjNeN*kf{` zgD6VJsfwb2l%>vMfgLcH6)STc_U?osnPe2caFM$T9Dm|Vt^uSJ#2 zq&7EASu;ctrr4!Du$47%1}@BeraaL875g(&$bXFM*Mw$v*lTEyf_bi;6QOi7SFxJr zQIc_?J?e99|N57@{`2!hOjMeU!!}TnXX9vcDgiWj1BCX5S^F3q>yqvs!M(SJ8CBV3 zP8@jCGv0Jd@7lifG4@Iy+*(b$vSq0-jrz9?&Dux0V) zC)TU;vW9514~xyaXnc9uO~(kpJP@rs9ZiN}A9W)UH|*mZ_7nL5EW2Uf4%@GR$+=&` zjdYw0r(8t${S(Cs0F+Yz_c$KrBJ4bvE!KB`+ut4acX@aB7YDn)I@tYuZ})h&=rv5( z(v@i0~=5(P=MLVwCHE!l2TT&}{+_jgT&*i4JllkBP)irXY~ovP<0#b(HX? zK9~&F4st@XGtKw|pvV;neiJRHvn{r2Q%zXGyZSHRYavCJ@!J1cvWxZtJpkWVE@3Cq z!L5%j-~wnEX|7xWT>DT*hmcS!Nw_F10An|4j==#aF=^0F2R7n!fR+K9|kZq zu2+@P@EfH&2MqxQkO5R|K!re4!yZ8y00hm$;@}Phr$By&c*nyooEvwMcm#>B0i&z3 zdoYpsL$X4YCggC~8pZNVs3Vf|NrCNt5;Fn zr;WZt-FK;@r4K?WzePMs>Z+qsuNw=aegxXwwieq&EK%p_{ipA{tVQo_REyO`G#87h zIx}xr^m~oX|ys4UUUizi)sHLKSYmuQK>5 z9u5WX{xMaj-B_OF2SA6U3&EIl!}^jgdDP>17WO{U0VF4}%!PbJk{i@frWu>$4>8h9 zKa(fZkr=Dr7&+}%^12ms9$~qelRq}1#KKiyN#ycVVm63bal+c^?c#>{(sJC6)Gwf? z-Pbs%DhYOSA`eI%(ph`?WSFYZjo?pHM)3Qv@M9G@f@J6$=R{RKO7pC`w{(48nha>Q zqq0c5;yhJV=>JF5b?`|AsZZ(7%}JL4|0Z~yr56o+Tc-8|rUnsq1A7Ix7}cW{=7YO> I+dswkzrOP&nE(I) literal 0 HcmV?d00001 diff --git a/backend/python/crypto/__pycache__/index.cpython-39.pyc b/backend/python/crypto/__pycache__/index.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ed0b32122bfeb106849ce08648f8a2c7c7e99da4 GIT binary patch literal 1568 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 literal 0 HcmV?d00001 diff --git a/backend/python/coingecko.py b/backend/python/crypto/coingecko.py similarity index 100% rename from backend/python/coingecko.py rename to backend/python/crypto/coingecko.py diff --git a/backend/python/crypto/index.py b/backend/python/crypto/index.py new file mode 100644 index 0000000..9ef4359 --- /dev/null +++ b/backend/python/crypto/index.py @@ -0,0 +1,50 @@ +from flask import Flask + +from crypto.coingecko import CoinGecko +from crypto.miindicador import MiIndicador + +app = Flask(__name__) + + +@app.route('/') +def main(): + output = [ + "", + "", + "Welcome", + "", + "" + ] + return "\n".join(output) + + +@app.route('/crypto/historical///') +@app.route('/crypto/historical////') +def historical_crypto(ids, from_, to, currencies='usd'): + cg = CoinGecko() + return cg.historical(id_=ids, from_=from_, to=to, currency=currencies) + + +@app.route('/crypto/') +@app.route('/crypto//') +def crypto(ids, currencies=('usd', 'clp')): + cg = CoinGecko() + return cg.get(ids, currencies) + + +@app.route('/indicador/historical/') +@app.route('/indicador/historical//') +def historical_indicador(ind, since=None): + mi = MiIndicador() + return mi.historical(ind, since) + + +@app.route('/indicador/') +@app.route('/indicador//') +def indicador(ind, fecha=None): + mi = MiIndicador() + return mi.get(ind, fecha) + + +if __name__ == '__main__': + app.run(host='0.0.0.0', port=5001, debug=True) diff --git a/backend/python/miindicador.py b/backend/python/crypto/miindicador.py similarity index 100% rename from backend/python/miindicador.py rename to backend/python/crypto/miindicador.py diff --git a/backend/python/environment.yml b/backend/python/environment.yml deleted file mode 100644 index 544e187..0000000 --- a/backend/python/environment.yml +++ /dev/null @@ -1,10 +0,0 @@ -name: cryptos -channels: - - defaults -dependencies: - - httpx=0.17.1 - - pip=21.1.2 - - python=3.9.5 - - setuptools=52.0.0 -# - pip: -# - pyinstaller==4.3 diff --git a/backend/python/requirements.txt b/backend/python/requirements.txt deleted file mode 100644 index 5f4c202..0000000 --- a/backend/python/requirements.txt +++ /dev/null @@ -1,30 +0,0 @@ -# This file may be used to create an environment using: -# $ conda create --name --file -# platform: win-64 -altgraph=0.17=pypi_0 -ca-certificates=2021.5.25=haa95532_1 -certifi=2021.5.30=py39haa95532_0 -future=0.18.2=pypi_0 -h11=0.12.0=pyhd3eb1b0_0 -h2=4.0.0=py39haa95532_3 -hpack=4.0.0=py_0 -httpcore=0.12.3=pyhd3eb1b0_0 -httpx=0.17.1=pyhd3eb1b0_0 -hyperframe=6.0.1=pyhd3eb1b0_0 -idna=2.10=pyhd3eb1b0_0 -openssl=1.1.1k=h2bbff1b_0 -pefile=2021.5.24=pypi_0 -pip=21.1.2=py39haa95532_0 -pyinstaller=4.3=pypi_0 -pyinstaller-hooks-contrib=2021.1=pypi_0 -python=3.9.5=h6244533_3 -pywin32-ctypes=0.2.0=pypi_0 -rfc3986=1.4.0=py_0 -setuptools=52.0.0=py39haa95532_0 -sniffio=1.2.0=py39haa95532_1 -sqlite=3.35.4=h2bbff1b_0 -tzdata=2020f=h52ac0ba_0 -vc=14.2=h21ff451_1 -vs2015_runtime=14.27.29016=h5e58377_2 -wheel=0.36.2=pyhd3eb1b0_0 -wincertstore=0.2=py39h2bbff1b_0