Python with Flask

This commit is contained in:
2021-07-14 10:11:54 -04:00
parent 7a6e9dec95
commit 4a321b4105
11 changed files with 56 additions and 70 deletions

View File

@ -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" ]

Binary file not shown.

View File

@ -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 = [
"<html>",
"<body>",
"Welcome",
"</body>",
"</html>"
]
return "\n".join(output)
@app.route('/crypto/historical/<ids>/<from_>/<to>')
@app.route('/crypto/historical/<ids>/<from_>/<to>/<currencies>')
def historical_crypto(ids, from_, to, currencies='usd'):
cg = CoinGecko()
return cg.historical(id_=ids, from_=from_, to=to, currency=currencies)
@app.route('/crypto/<ids>')
@app.route('/crypto/<ids>/<currencies>')
def crypto(ids, currencies=('usd', 'clp')):
cg = CoinGecko()
return cg.get(ids, currencies)
@app.route('/indicador/historical/<ind>')
@app.route('/indicador/historical/<ind>/<since>')
def historical_indicador(ind, since=None):
mi = MiIndicador()
return mi.historical(ind, since)
@app.route('/indicador/<ind>')
@app.route('/indicador/<ind>/<fecha>')
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)

View File

@ -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

View File

@ -1,30 +0,0 @@
# This file may be used to create an environment using:
# $ conda create --name <env> --file <this 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