Duw op enter om te zoeken

Host je Python-applicatie op IBMi

Author Avatar
Pinar Bedel
Business Consultant

We bouwen onze applicaties om te beginnen allemaal op onze eigen pc. We zetten een nieuw project op en werken het idee vanaf nul uit op onze eigen localhost. Maar wat als het helemaal klaar is? Of klaar genoeg om met de rest van de wereld te delen? Hiervoor is een productieomgeving nodig. Zoals je waarschijnlijk weet, of misschien voor het eerst hoort, moet je je app 'deployen' (implementeren) om hem uit te kunnen voeren. In deze blogpost gaan we je vertellen hoe wij onze Python-applicatie op het IBMi power system hebben geïmplementeerd.

Projectopzet

We bouwen onze applicaties om te beginnen allemaal op onze eigen pc. We zetten een nieuw project op en werken het idee vanaf nul uit op onze eigen localhost. Maar wat als het helemaal klaar is? Of klaar genoeg om met de rest van de wereld te delen? Hiervoor is een productieomgeving nodig. Zoals je waarschijnlijk weet, of misschien voor het eerst hoort, moet je je app 'deployen' (implementeren) om hem uit te kunnen voeren. In deze blogpost gaan we je vertellen hoe wij onze Python-applicatie op het IBMi power system hebben geïmplementeerd.

Picture 1-2

Het bestand __init__.py bevat de geïmporteerde pakketten en de configuratie van het project, ons voorbeeld.

Gebruikte pakketten

Flask: https://github.com/flask-api/flask-api

Flask-restful: https://github.com/flask-restful/flask-restful

Flask-SqlAlchemy: https://github.com/pallets-eco/flask-sqlalchemy

SqlAlchemy-ibmi: https://github.com/IBM/sqlalchemy-ibmi

Verbinding maken met DB2

Voor de verbinding met onze DB2 database gebruiken we het pakket “Flask-SQLAlchemy”. Dit pakket kan eenvoudig worden geïnstalleerd en geconfigureerd. Na het opzetten van de Flask-applicatie wordt de verbinding met de database geconfigureerd met SQLAlchemy. Dit pakket wordt beheerd door IBM die ervoor zorgt dat het pakket up-to-date blijft. Het pakket is ook open source, wat uitbreidingen komende uit de ontwikkelaarsgemeenschap mogelijk maakt.

In onze demo hebben we de configuratie toegevoegd via een apart configuratiebestand. In de onderstaande afbeelding zie je de import van Flask en SQLAlchemy, en definieer je de eerste stappen van de verbinding.

picture 2

Het configuratiebestand is de volgende stap; dit bepaalt, welk databaseschema, host en gebruiker van de connectie je gebruikt.

picture 3

Implementatie met FastCGI

De eerste implementatiestap voor onze applicatie is het gebruik van FastCGI, een implementatie-optie voor Python. Om je Python-toepassing met FastCGI te kunnen deployen, moet je een WSGI-server aanmaken waarop je toepassing gaat draaien. Dit pakket kan eenvoudig als volgt worden geïmporteerd en gebruikt:

picture 4

Een HTTP-server configureren

Als laatste stap van de echte Python-app implementatie hebben we een HTTP-server op ons IBMi-systeem aangemaakt. Het aanmaken van de HTTP-server is de eenvoudige stap, de volgende stap is de configuratie daarvan. Met het IBM Web Administration for I platform, ook bekend als HTTP Admin, kun je het httpd-configuratiebestand eenvoudig in elkaar zetten. De eerste stap is het toevoegen van de FastCGI-module om je Python-script te verwerken. Daarna moeten ook de documentroot en de directory van je Python applicatie aan het configuratiebestand worden toegevoegd, dit is de locatie van je applicatie op je eigen systeem.

Hier is een voorbeeld van het httpd.conf bestand:

picture 5

picture 5 bis

Demo van onze kleine Python-applicatie

Als proef of concept van onze Python-applicatie genaamd “pythonflask” hebben we een API-applicatie gemaakt die ruwe JSON-data retourneert. Er zijn twee routes aangemaakt waarlangs we ons model aanroepen om verbinding te maken met onze database en daar de gegevens uit de benodigde tabel op te halen. In de controller definiëren we de reservevelden en krijgen vervolgens de benodigde gegevens; dit kunnen alle gegevens uit die tabel zijn of slechts één product naar productnaam of id. Hiermee wordt de benodigde informatie geretourneerd en teruggestuurd naar de interface.

Onze twee routeringsaanroepen bevatten alle gegevens van onze producten en de gebruikers.

picture 6

Hieronder vindt u een voorbeeld van de controller om productgegevens op te halen: de eerste retourneert één product volgens het opgegeven product-ID, en de tweede alle productgegevens uit de tabel.

.

picture 7

 

 

Vacatures

Wij zijn voortdurend op zoek naar nieuwe collega's!

Als je onze waarden deelt en op zoek bent naar een uitdagende job in België's Best Workplace, bezoek dan onze website.

Solliciteer nu

Schrijf je in voor onze nieuwsbrief

Follow us

  

Deel dit artikel