Google Cloud App engine Python
Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

Google Cloud App engine Python



  1. #1
    Loupsio

    Google Cloud App engine Python


    ------

    Bonjour,
    Je ne sais pas si cela ira plutôt dans "Logiciel" ou dans "Programmation" car c'est un peu des deux, mais j'ai un problème avec Gougle Cloud lorsque j’essaie de déployer une app python

    L'app fonctionne en local, mais lorsque j'utilise gcloud app deploy dans le terminal GCP, plein d'imports de librairies deviennent soulignées en rouge et il me dit : Unable to import 'nom_de_librairie_'pylint(impo rt-error)
    (avec les différentes librairies qu'il n'arrive pas a importer a la place de : _nom_de_librairie_,
    mais il me fait ça sur des librairies classiques et répandues comme "pandas", "dash" ou "plotly"

    Tout les topic que je vois sur le sujet concernent VS code et des problemes de path, mais la il s'agit de google cloud, est ce que quelqu'un aurait des infos?
    Merci bien

    -----

  2. #2
    umfred

    Re : Google Cloud App engine Python

    tu dois avoir un fichier requirements.txt à côté de ton projet qui doit contenir les modules à installer (avec leur version)? est-ce que les modules posant soucis sont présent dans ce fichier ?
    https://cloud.google.com/functions/d...s-python?hl=fr

  3. #3
    Loupsio

    Re : Google Cloud App engine Python

    Bonjour,
    Merci de ta réponse, oui les modules en question sont bien présent dedans, j'ai utilisé "pipreqs" pour créer le fichier requirements.txt et tout les packages qui posent problème sont bien dedans, (la version est bien spécifiée également, mais j'ai meme essayé de retirer la version ou cas ou ce soit celle ci qui pose problème a google cloud , et qu'il utilise celle qu'il possède s'il en trouvait une autre, mais ça n'a rien changé)
    Dernière modification par Loupsio ; 22/07/2021 à 11h15.

  4. #4
    umfred

    Re : Google Cloud App engine Python

    tu as suivi ce guide là ? https://cloud.google.com/functions/d.../console?hl=fr (ou une des autres méthodes) en ayant bien les fichiers requirements.txt et main.py (ou autre nom) dans le même répertoire; ou si en zip, les fichiers sont à la racine du zip ?

  5. A voir en vidéo sur Futura
  6. #5
    Loupsio

    Re : Google Cloud App engine Python

    Je viens d'essayer,
    Elle a été créé sans problemes mais quand je vais dans le déclencheur et que je suis le lien qu'il me donne pour la fonction, j'ai une erreur :
    Error: could not handle the request

    quand je vais voir les journaux, il y a deux logs d'erreur :
    Errueur 1)
    Code:
     ERROR in app: Exception on / [GET]
    je pense que l'exception "/" [GET] fait reference à la fonction principal :
    Code:
    @server.route('/')
    def index():
        return render_template('index.html')
    mais je ne suis pas sur, en tout cas ça marchait en local donc je vois pas pourquoi ca ne marcherait pas

    L'erreur numero 2)
    Code:
    TestFlask25qpzjvx75w0 Traceback (most recent call last): File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/app.py", line 2447, in wsgi_app response = self.full_dispatch_request() File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/app.py", line 1952, in full_dispatch_request rv = self.handle_user_exception(e) File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/app.py", line 1821, in handle_user_exception reraise(exc_type, exc_value, tb) File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise raise value File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/app.py", line 1950, in full_dispatch_request rv = self.dispatch_request() File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/app.py", line 1936, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "/layers/google.python.pip/pip/lib/python3.8/site-packages/functions_framework/__init__.py", line 80, in view_func return function(request._get_current_object()) TypeError: index() takes 0 positional arguments but 1 was given
    Traceback (most recent call last): File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/app.py", line 2447, in wsgi_app response = self.full_dispatch_request() File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/app.py", line 1952, in full_dispatch_request rv = self.handle_user_exception(e) File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/app.py", line 1821, in handle_user_exception reraise(exc_type, exc_value, tb) File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise raise value File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/app.py", line 1950, in full_dispatch_request rv = self.dispatch_request() File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/app.py", line 1936, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "/layers/google.python.pip/pip/lib/python3.8/site-packages/functions_framework/__init__.py", line 80, in view_func return function(request._get_current_object()) TypeError: index() takes 0 positional arguments but 1 was given
    l'erreur 2 parle de Flask mais je ne vois pas ce qui pose problème

  7. #6
    Loupsio

    Re : Google Cloud App engine Python

    #désolé pour doublon, je ne peux plus éditer l'ancien

    je viens de voir "TypeError: index() takes 0 positional arguments but 1 was given " dans l'erreur 2,ca fait référence a

    Code:
    @server.route('/')
    def index():
        return render_template('index.html')
    effectivement il n'attend pas d'argument , mais a aucun moment je lui en passe, lors de la création de la "fonction google cloud" il m'a demandé le nom de la fonction "principale" (par defaut il avaitmis Hello_World" du coup j'ai remplacé par le nom de cette fonction (index) qui appelle mon fichier html, mais j'ai juste donné le nom de la fonction a google cloud, est-ce qu'il passe un paramètre par défaut?

  8. #7
    Loupsio

    Re : Google Cloud App engine Python

    Edit
    Effectivement il passe un argument dans la fonction principale, (j'ai mis un peu de temps a voir que si on passait pas par un fichier zip il proposait un exemple de code ou effectvement il y a un argument dans al fonction principale qui n'est pas réutilisé derrière)

    j'ai donc dupliqué la fonction en lui donnant un autre nom et ou j'ai rajouté un argument dans celle appelée par GCP et j'ai laissé sans argument pour celle qui fait la meme chose mais appelée par html

    en revanche j'enchaine les erreurs
    Code:
     Traceback (most recent call last): File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/app.py", line 2447, in wsgi_app response = self.full_dispatch_request() File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/app.py", line 1952, in full_dispatch_request rv = self.handle_user_exception(e) File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/app.py", line 1821, in handle_user_exception reraise(exc_type, exc_value, tb) File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise raise value File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/app.py", line 1950, in full_dispatch_request rv = self.dispatch_request() File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/app.py", line 1936, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "/layers/google.python.pip/pip/lib/python3.8/site-packages/functions_framework/__init__.py", line 80, in view_func return function(request._get_current_object()) File "/workspace/main.py", line 50, in index2 return render_template('index.html') File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/templating.py", line 137, in render_template return _render( File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/templating.py", line 120, in _render rv = template.render(context) File "/layers/google.python.pip/pip/lib/python3.8/site-packages/jinja2/environment.py", line 1304, in render self.environment.handle_exception() File "/layers/google.python.pip/pip/lib/python3.8/site-packages/jinja2/environment.py", line 925, in handle_exception raise rewrite_traceback_stack(source=source) File "/workspace/templates/index.html", line 1, in top-level template code {% block content %} File "/workspace/templates/index.html", line 21, in block 'content' <a href="{{url_for('index')}}" class="button is-info is-rounded has-text-centered">Reset</a> File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/helpers.py", line 370, in url_for return appctx.app.handle_url_build_error(error, endpoint, values) File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/app.py", line 2216, in handle_url_build_error reraise(exc_type, exc_value, tb) File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise raise value File "/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/helpers.py", line 357, in url_for rv = url_adapter.build( File "/layers/google.python.pip/pip/lib/python3.8/site-packages/werkzeug/routing.py", line 2305, in build raise BuildError(endpoint, values, method, self) werkzeug.routing.BuildError: Could not build url for endpoint 'index'. Did you mean 'run' instead?
    Dece que je comprends, cette fois c'est l'appel de la fonction via le fichier html qui plante ({{url_for('index')}}
    Je ne comprend pas la partie que j'ai mise en gras ( Could not build url for endpoint 'index'. Did you mean 'run' instead?), pourquoi il ne retrouve pas de endpoint pour 'index' et me propose 'run' alors que j'ai bien une fonction index qi est celle appelée par html justement , mais je n'ai pas de fonction "run"...

    Code:
    #fonction appelée par google cloud
    @server.route('/start')
    def index2(request):
        return render_template('index.html')
    
    #fonction identique mais appelée par le html
    @server.route('/')
    def index():
        return render_template('index.html')
    Dernière modification par Loupsio ; 22/07/2021 à 14h37.

  9. #8
    umfred

    Re : Google Cloud App engine Python

    il manque le request en paramètre de index(); rajoute-le pour voir

  10. #9
    Loupsio

    Re : Google Cloud App engine Python

    si je rajoute ca ne sert plus a rien de l'avoir dupliquée non? j'ai dupliquéejustement pour en avoir une sans request, celle qui est appellée par le fichier html, car le fichier html lui ne passe pas d'argument quand il appelle cette fonction, il risquerai de me mettre une erreur quand justement la personne clique sur lebouton "reset" ou le bouton "retour" (qui renvoient justement vers la page principale) car il attendra un argument mais le fichier html n'en aura pas envoyé, non?

    En tout cas je viens d'essayer en local et effectivement : TypeError: index() missing 1 required positional argument: 'request'
    il attend un argument alors que il n'y en a pas quand c'est html qui appel cette fonction
    Dernière modification par Loupsio ; 22/07/2021 à 17h40.

  11. #10
    umfred

    Re : Google Cloud App engine Python

    en lisant rapidement ce tuto de déploiement (https://medium.com/@dmahugh_70618/de...e-faa883b5ffab ) , je dirais qu'il faut que ta fonction s'appelle (soit) server

  12. #11
    Loupsio

    Re : Google Cloud App engine Python

    je dirais qu'il faut que ta fonction s'appelle (soit) server
    j'ai pas compris, ton message a été tronqué?

    Le site que tu mentionne c'est pour app engine du coup plus pour "functions"? c'est bien deux choses différentes ? (que je ne dise pas de betises)
    Le truc c'est qu'avec app engine l'erreur n'est pas la même, l'erreur est (pour l'instant) sur certains imports ou il me dit : Unable to import 'pandas'pylint(import-error) alors que il est bien dans le fichier requirements.txt , en tout cas je suppose que c'est ca qui bloque car ils sont soulignés en rouge dans le google cloud shell et ensuite quand je deploie je retombe sur un Erreur 502 bad gateway

    das tout les cas le code en soi devrait marcher (functions ou app engine) puisque cela fonctionne en local, mais app engine ne veut pas de plusieurs imports et "functions" me renvoi une erreur sur la fonction index, ou il me dit qu'il ne la trouve pas et me propose de pointer sur "run" qui n'existe pas en tant que fonction

  13. #12
    umfred

    Re : Google Cloud App engine Python

    ma réponse n'a pas été tronquée (le "soit" c'est le verbe être conjugué); je parle de server qui est le nom de ton application Flask sauf erreur de ma part.
    pour moi, functions tu enregistres une fonction (def mafonction():..) qui exécute un certain code (https://cloud.google.com/functions/d...?hl=fr#windows )
    et app engine lance une application (un site web est une application) (https://cloud.google.com/appengine/d...kstart#windows)
    tu as des exemples de code simple sur chacune des pages

  14. #13
    Loupsio

    Re : Google Cloud App engine Python

    Oui j'ai justement utilisé les exemples, mais je ne sais pas pourquoi app engine me dit qu'il ne trouve pas certains packages classiques de python, et google cloud functions ne trouve pas la fonction qui est appelée par le fichier html , la fonction index (alors qu'en local ca marche) et je ne vois pas d'où viens le problème

Discussions similaires

  1. cloud, google et switch
    Par invite0dbb9240 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 2
    Dernier message: 28/02/2011, 22h28
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...