Mes premiers pas avec Heroku
source link: https://blog.mathieu-leplatre.info/mes-premiers-pas-avec-heroku-fr.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Mes premiers pas avec Heroku
Mon 10 October 2011J'ai pris le temps de tester la plateforme Heroku, qui fait pas mal de bruit en ce moment.
L'idée est simple : le développeur pousse son code dans une branche Git pour déployer son application. Ils se chargent du reste.
La documentation pour déployer du python est bien faite.
heroku et virtualenv
Pour commencer, j'ai installé l'outil heroku en ruby (sic), dans un virtualenv
sudo aptitude install rubygems virtualenv --no-site-packages env source env/bin/activate
Merci à Bruno, qui nous a expliqué récemment comment faire cohabiter les gems ruby et virtualenv
export GEM_HOME="$VIRTUAL_ENV/gems" export GEM_PATH="" export PATH=$PATH:$GEM_HOME/bin
(À ajouter au hook dans ~/.virtualenvs/postactivate pour plus tard)
Pour terminer, il suffit de poser le gem
gem install heroku
Et j'ai bien heroku cloisonné dans le virtualenv.
(env)src$ which heroku /home/mathieu/path/env/gems/bin/heroku (env)src$ heroku help Usage: heroku COMMAND [--app APP] [command-specific-options]
heroku et la Configuration de l'Application
Pour apprivoiser la plateforme, j'ai utilisé le micro-framework Flask, suggéré dans le tutorial python. C'est ultra-simple, ultra-léger, ultra-tout.
Afin de gérer ma configuration, j'ai créé une classe Settings qui utilise les variables d'environment:
# settings.py import os class Settings(object): DEBUG = bool(os.environ.get("DEBUG")) TESTING = bool(os.environ.get("TESTING")) PORT = int(os.environ.get("PORT", 5000)) HOST = os.environ.get("HOST", '0.0.0.0')
Que je branche dans l'application :
# app.py from flask import Flask from settings import Settings app = Flask(__name__) settings = Settings() #... if __name__ == "__main__": # ... app.config.from_object(settings)
Ensuite grâce au client heroku, je peux contrôler à distance la configuration de mon application, qui est redémarrée à chaque changement :
(env)src$ heroku config PATH => bin:/usr/local/bin:/usr/bin:/bin PYTHONUNBUFFERED => true (env)src$ heroku config:add DEBUG=True Adding config vars: DEBUG => True Restarting app... done, v19. (env)src$ heroku config DEBUG => True PATH => bin:/usr/local/bin:/usr/bin:/bin PYTHONUNBUFFERED => true (env)src$ heroku config:remove DEBUG Removing DEBUG and restarting app... done, v20.
Je peux revenir en arrière quand un changement de config a posé problème :
(env)src$ heroku releases Rel Change By When ---- ---------------------- ---------- ---------- v20 Config remove DEBUG [email protected] 25 seconds ago v19 Config add DEBUG [email protected] 1 minute ago (env)src$ heroku rollback v19 Rolled back to v19
#python, #flask, #tips, #heroku - Posted in the Dev category
© Copyright 2020 by Mathieu Leplatre. mnmlist Theme
Content licensed under the Creative Commons attribution-noncommercial-sharealike License.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK