[Python] Problemi di deploy di web app su heroku

Federico Fissore federico a fissore.org
Mer 11 Gen 2023 09:50:32 CET


Ciao



Non ho mai usato Heroku, ma vedo che supportano il deploy di immagini docker.



Se usare docker è un'opzione per voi, allora potete deployare un'immagine con le dipendenze necessarie a compilare la libreria, le librerie, e il vostro codice python.



Se funziona, potete poi ottimizzare usando una multi-stage build https://docs.docker.com/build/building/multi-stage/ : 

1. nella prima parte, installate gcc e le librerie, dicendo a pip di salvare le wheels in una cartella

2. nella seconda, installate le librerie partendo dalle wheels in quella cartella



Noi facciamo così in un paio di servizi che usano librerie con parti native da compilare: la build è lenta, ma il risultato è un'immagine docker snella e minimale


ciao



federico






---- On Mon, 09 Jan 2023 19:17:46 +0100 Perini Matteo <perini.matteo a gmail.com> wrote ---



Ciao a tutti,

vi chiedo aiuto perchè sto riscontrando problemi a fare il deploy di una web app flask su heroku.

Credo che il problema stia nella creazione del virtual env su heroku.

L'app che ho costruito fa uso di varie librerie, tutte tranne una installabili tramite pip.
Una invece, PyOCC (porting per python di OpenCascade), non sono riuscito ad installarla ne con pip ne compilando i sorgenti.

Fortunatamente ho trovato un pacchetto conda già pronto e ho portato avanti tutto lo sviluppo dell'app in un conda env (pensando non vi fosse grande differenza con venv).

Adesso però per fare il deploy su heroku ho scoperto che bisogna generare da conda un requirements.txt che poi viene usato dallo script di heroku per creare l'ambiente (usando venv se non sbaglio).

Visto che non ne vengo a capo e il deploy si "rompe" sempre (penso perchè pip non riesce ad installare pyOCC), ho pensato di copiare la libreria OCC dall'environment conda alla mia cartella di progetto in modo da portarla dentro heroku come sorgente.

Naturalmente in locale tutto funziona bene.

Non so se ho spiegato abbastanza bene la situazione ma arrivo alle domande:

1) Ho capito bene? heroku usa venv? non posso usare un conda env in heroku giusto?

2) Se volessi spostare una libreria dall'ambiente conda alla cartella locale del progetto c'è un modo per farlo? come posso fare a importare OCC in modo corretto?

3) Ho provato a copiare la cartella OCC da conda in locale e cambiare tutti gli import per far puntare alla nuova cartella ma ottengo "segfault". Ipotizzo che sia dovuto al fatto che è un porting da C++. Idee?

4) avete altri suggerimenti?

E' la mia prima flask app un po' articolata e non sono molto esperto.

Grazie per ogni aiuto.

Ciao

Matteo 

   
 



_______________________________________________

Python mailing list

Python a lists.python.it

https://lists.python.it/mailman/listinfo/python
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20230111/bd497df4/attachment.html>


Maggiori informazioni sulla lista Python