[PYTHON] Re: La vie d'Heroku à partir de zéro avec Flask ~ PhantomJS à Heroku ~

introduction

Pour la première fois, j'ai créé une API qui renvoie des informations grattées avec json en utilisant Flask et Heroku of Python, donc j'aimerais résumer la méthode que j'ai utilisée à l'époque.

La construction de l'environnement jusqu'à *** HelloWorld *** avec heroku est la première partie Re: Heroku life - Environment start with Flask from zero and the Hello World ~ À Le code de l'API pour gratter au sélénium et Belle soupe à déployer sur heroku cette fois-ci et son explication se trouvent dans la deuxième partie. Re: La vie Heroku à partir de zéro avec Flask ~ Selenium & PhantomJS & Beautifulsoup ~ Puisqu'il est écrit, veuillez le voir ensemble.

Que faire cette fois

Si vous étudiez, vous pouvez réinventer les roues

Cette fois, j'écrirai comment gratter en utilisant Selenium et PhantomJS en utilisant SlideShare comme thème.

*** Comme il est devenu long lorsque je l'ai rassemblé en un seul article, le contenu du programme exploité et gratté par le sélénium est divisé dans la deuxième partie. *** ***

Flux de déploiement vers Heroku

Préparation

Le fichier final à donner à Heroku

Créer requirements.txt

Encore une fois, nous devons augmenter l'état actuel du fichier pour le déployer sur Heroku.

$ pip freeze > requirements.txt

Créer runtime.txt

Préparez un fichier qui spécifie la version du runtime que Heroku utilisera lors de l'utilisation de Python.

$ echo "python-3.5.2" >> runtime.txt

Une fois que vous avez préparé ce fichier, la préparation du fichier jusqu'à ce stade est terminée.

Push to Heroku et paramètres finaux

Quand tu arrives ici, comme tu l'as fait la dernière fois

Appliquer git et commit

$ git init
#Définissez git dans le dossier
$ git add api.py Procfile requirements.txt runtime.txt
#Tout ajouter
#Voir ci-dessous.N'inclut pas les buildpacks

$ git commit -m "firstcommit"
#commettre

Faites du côté Heroku et poussez

$ heroku login
#Connectez-vous à heroku Entrez l'adresse e-mail enregistrée et passez

$ heroku create slideshare-api
#Créer un nouveau projet pour heroku
#Vous ne pouvez pas utiliser le même nom de projet, veuillez donc le modifier si vous le faites.

$ git push heroku master
#Poussez vers le projet heroku que vous avez créé

Cela ne fonctionne pas avec heroku car PhantomJS n'est pas encore prêt à ce stade.

Utilisez PhantomJS avec Heroku

Après avoir téléchargé l'application sur Heroku, vous devez modifier les paramètres pour utiliser buildpack-multi, qui peut utiliser à la fois les buildpacks PhantomJS et Python. Décrivez le buildpack à utiliser dans le fichier `` .buildpacks '', modifiez les paramètres avec la commande, puis poussez vers heroku. Exécutez les trois commandes.

Ajouter buildpack-multi à heroku

$ heroku config:add BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-multi.git

définir buildpack-multi sur heroku

$ heroku buildpacks:set https://github.com/heroku/heroku-buildpack-multi.git

Définir le chemin PhantomJS vers heroku

$ heroku config:add LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/lib:/app/vendor/phantomjs/lib

Créer des .buildpacks

https://github.com/heroku/heroku-buildpack-python.git
https://github.com/stomita/heroku-buildpack-phantomjs.git

Si vous pouvez le faire, poussez-le vers heroku!

$ git add .buildpacks

$ git commit -m "add buildpacks"

$ git push heroku master

Référence: Cette fois, je le fais d'une manière similaire à celle-ci.

J'ai écrit une autre méthode sur ce site, mais cela n'a pas fonctionné pour moi.

Achevée

Assurez-vous que cela fonctionne スクリーンショット 2016-10-17 21.44.52.png

déplacé! !! !! !!

Si vous obtenez une erreur

Voir également l'erreur mentionnée dans l'article précédent. Veuillez penser que la commande pour écrire dans la configuration de heroku, etc. n'a pas été écrite dans heroku à moins qu'elle ne soit poussée vers heroku.

PhantomJS ne fonctionne pas sur Heroku! Vérifier l'élément

①: Le cadre d'application de Heroku est-il défini sur Multipack et Buildpacks est-il défini sur https: // github.com / heroku / heroku-buildpack-multi.git ''? スクリーンショット 2016-10-17 23.17.42.png

Sinon, ajoutez `buildpack-multi à heroku" et définissez buildpack-multi sur heroku. Il semble que la partie `` ne soit pas bien faite, donc après avoir tapé à nouveau la commande, Veuillez changer un fichier et le renvoyer vers heroku.

②: Vérifiez avec les journaux heroku Comme je l'ai écrit dans l'article précédent, si vous obtenez une erreur

$ heroku logs

Veuillez vérifier avec.

driver = webdriver.PhantomJS()Si le message d'erreur montre la partie de ou l'endroit où l'élément est spécifié en utilisant le pilote pour la première fois, il semble que phantomjs ne peut pas être utilisé correctement du côté heroku du programme.**①**Vérifiez le même endroit que, ou essayez de frapper la partie où le chemin PhantomJS est à nouveau défini sur heroku, puis poussez vers heroku.



 ③: Vérifiez s'il y a un fournisseur dans heroku
 Accédons à la zone de stockage de heroku lui-même.

$ heroku run bash

 Vous pouvez accéder au serveur heroku comme ssh avec. Si phantomJS réussit dans heroku

~ $ ls api.py Procfile requirements.txt runtime.txt vendor

 *** fournisseur *** est généré comme ceci, et PhantomJS y est inclus.
 Si ce n'est pas le cas, cela ne fonctionne pas, c'est donc une bonne idée de le vérifier.

## Épilogue
 Bien que cela fonctionne localement, il y a de nombreux endroits où PhantomJS est élevé en heroku et cela ne fonctionne pas bien du côté heroku, donc je pense que cela peut rester bloqué, mais faites de votre mieux!

 De plus, s'il y a des améliorations ou des erreurs, nous vous serions reconnaissants de les signaler dans la section commentaires.
Twitter:@ymgn_ll


Recommended Posts

Re: La vie d'Heroku à partir de zéro avec Flask ~ PhantomJS à Heroku ~
Re: La vie Heroku à partir de zéro avec Flask ~ Selenium & PhantomJS & Beautifulsoup ~
Re: La vie Heroku commence avec Flask from zero - Environnement et Hello world -
phantomjs et sélénium
python sélénium chromedriver beautifulsoup
sélénium
Re: La vie Heroku à partir de zéro avec Flask ~ Selenium & PhantomJS & Beautifulsoup ~
Mémo BeautifulSoup4
Redémarrez le routeur en utilisant Python, Selenium, PhantomJS
Utilisez le pilote Web phantomjs de sélénium avec unittest de python
De la construction de l'environnement au déploiement pour flask + Heroku avec Docker
Efficacité commerciale à partir de zéro avec Python
Re: Vie de programmation compétitive à partir de zéro Pour que les débutants puissent obtenir des performances encore un peu plus élevées ~ ABC154 ~ 156 avec impressions ~
Comment télécharger avec Heroku, Flask, Python, Git (4)
Apprentissage automatique à partir de zéro (apprentissage automatique appris avec Kaggle)
Créons une application Web de conversion A vers B avec Flask! De zéro ...
Je veux faire la transition avec un bouton sur le ballon
Comment télécharger avec Heroku, Flask, Python, Git (Partie 3)
Comment télécharger avec Heroku, Flask, Python, Git (Partie 1)
Comment modifier le répertoire statique par défaut dans Flask
Comment télécharger avec Heroku, Flask, Python, Git (Partie 2)
Soit Code Day68 à partir de zéro "709. To Lower Case"
Comment déployer une application Web créée avec Flask sur Heroku
[Tweepy] Re: Développement de Twitter Bot à partir de zéro # 1 [python]
Re: Durée de vie de la programmation compétitive à partir de zéro Chapitre 1.3 "Side tea"
Django à partir de zéro (partie: 2)
Django à partir de zéro (partie: 1)
Touch Flask + courir avec Heroku
La vie PySpark à partir de Docker
Re: Vie de programmation compétitive à partir de zéro Chapitre 1.2 "Python of tears"
Exécutez l'application avec Flask + Heroku
[Introduction] De l'installation de kibana au démarrage
Dans Vim: créer une sortie HTML à partir de markdown en utilisant pandoc
Let Code Day 80 "703. Kth plus grand élément d'un flux" à partir de zéro
Let Code Day 66 "438. Find All Anagrams in a String" en partant de zéro