IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Bug sur python [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 18
    Par défaut Bug sur python
    Bonjour,

    Sur python, je fais plusieurs requêtes sur cassandra, avec une boucle mais au bout d'un moment ça bloque et cette erreur apparaît :
    Fichier "C:\Python34\lib\site-packages\cassandra\cluster.py", ligne 3533, dans _reconnect_internal
    raise NoHostAvailable("Impossible de se connecter à un serveur", erreurs)
    cassandra.cluster.NoHostAvailable : ("Impossible de se connecter à des serveurs", {'XXXX' : OperationTimedOut('errors=Expiration du délai de création de la connexion
    n (5 secondes), last_host=Aucun',), 'XXXX' : OperationTimedOut('errors=Expiration du délai de création de la connexion (5 secondes), last_host=Aucun',), 'XXXX': OperationTimedOut('errors=Expiration du délai de création de la connexion (5 secondes), last_host=None',)}, 's'est produit à l'index 0')
    Pourriez-vous m'aider à résoudre ce problème ?

    Je vous remercie par avance infiniment

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Bonjour,

    Apparemment ce n'est pas un bug sur le code car vous dîtes,

    je fais plusieurs requêtes sur cassandra, avec une boucle mais au bout d'un moment ça bloque
    Ce qui veut dire que ça fonctionne un moment aussi...

    Mais vous dîtes ceci qui est contradictoire,

    NoHostAvailable("Impossible de se connecter à un serveur", erreurs)
    Est-ce que dans votre boucle, vous vous connectiez au serveur à chaque fois (à mon sens, ce n'est pas une bonne idée) ?

    ---------------

    Pour commencer, augmentez le timeout dans les paramètres du driver Cassandra afin de donner plus de temps aux requêtes pour obtenir une réponse.
    Si possible, réduisez la fréquence ou le volume des requêtes pour éviter de surcharger le cluster.

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 18
    Par défaut
    Bonjour,

    Oui effectivement c'est bien ça, cela marche pour les 50 premières itérations et ensuite cette erreur apparaît.
    Aussi, Lorsque que je ne fais pas de boucle et que j'exécute individuellement chaque élément de la liste, cela marche très bien.
    Dans mon driver cluster.py j'ai déjà augmenté les timeout suivants mais rien n'y fait, j'ai toujours ce problème.

    Voilà les timeout que j'ai augmenté :
    connect_timeout = 30 (qui était égal à 5 secondes de base)
    """
    Timeout, in seconds, for creating new connections.

    This timeout covers the entire connection negotiation, including TCP
    establishment, options passing, and authentication.
    """

    control_connection_timeout = float(36000) (qui était égal à 2 secondes)

    """
    A timeout, in seconds, for queries made by the control connection, such
    as querying the current schema and information about nodes in the cluster.
    If set to :const:`None`, there will be no timeout for these queries.
    """

    request_timeout = 30.0 (qui était de 10 secondes)
    """
    Request timeout used when not overridden in :meth:`.Session.execute`
    """

    J'effectue 3 requêtes sur cassandra à chaque boucle :
    def concatenation_liste_valeurs_OP(site_id):
    is_qal = False
    SESSION = TPC.getSession(is_qal)

    df_js_data1 = SESSION.prepare("SELECT * FROM click.table2 WHERE type = 'base' and key = 'cf_list' and id1 = '{}';".format(site_id))
    js_data1 = SESSION.execute(df_js_data1)
    df_results1 = pd.DataFrame(list(js_data1))


    df_js_data2 = SESSION.prepare("SELECT * FROM click.conditionnal_zp where site_id = '{}' and type = 'list' and code = 'OP24';".format(site_id))
    js_data2 = SESSION.execute(df_js_data2)
    df_results2 = pd.DataFrame(list(js_data2))


    df_js_data3 = SESSION.prepare("select * from click.conditionnal_zp where site_id = 'XXXX' and type='list' and code = 'XXXX' and source_id = 'XXXX'")
    js_data3 = SESSION.execute(df_js_data3)
    df_results3 = pd.DataFrame(list(js_data3))

    Je comprends pas ce que je dois faire de plus pour que cette erreur n'apparaisse plus. Si vous avez d'autres idées ce serait super sympa de me les partager

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Oui effectivement c'est bien ça, cela marche pour les 50 premières itérations et ensuite cette erreur apparaît.
    Il y aurait donc une limitation... Peut-être lié au nombre de sessions créés ?

    La création d'une nouvelle session pour chaque itération de la boucle peut épuiser les ressources disponibles, en particulier si les sessions ne sont pas correctement fermées.
    Il est recommandé de réutiliser la même session Cassandra pour toutes les requêtes, ou de s'assurer que les sessions sont fermées proprement après chaque utilisation.

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 18
    Par défaut
    Oui vous avez peut-être raison je vais essayer de fermer la session après chaque utilisation mais il reste à trouver comment fermer la session.
    J'ai essayé de chercher dans le driver j'ai une piste :

    Example usage::

    >>> from cassandra.cluster import Cluster
    >>> cluster = Cluster(['192.168.1.1', '192.168.1.2'])
    >>> session = cluster.connect()
    >>> session.execute("CREATE KEYSPACE ...")
    >>> ...
    >>> cluster.shutdown()

    Je vais essayer de cette façon :
    def concatenation_liste_valeurs_OP(site_id):
    is_qal = False
    SESSION = TPC.getSession(is_qal)

    df_js_data1 = SESSION.prepare("SELECT * FROM click.table2 WHERE type = 'base' and key = 'cf_list' and id1 = '{}';".format(site_id))
    js_data1 = SESSION.execute(df_js_data1)
    SESSION.shutdown()
    df_results1 = pd.DataFrame(list(js_data1))


    df_js_data2 = SESSION.prepare("SELECT * FROM click.conditionnal_zp where site_id = '{}' and type = 'list' and code = 'OP24';".format(site_id))
    js_data2 = SESSION.execute(df_js_data2)
    SESSION.shutdown()
    df_results2 = pd.DataFrame(list(js_data2))


    df_js_data3 = SESSION.prepare("select * from click.conditionnal_zp where site_id = 'XXXX' and type='list' and code = 'XXXX' and source_id = ''XXXX")
    js_data3 = SESSION.execute(df_js_data3)
    SESSION.shutdown()
    df_results3 = pd.DataFrame(list(js_data3))

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    La fermeture de la session se fait en appelant la méthode shutdown sur l'objet de la session

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 18
    Par défaut
    J'ai fermé la session avec un SESSION.shutdown() après utilisation, ma boucle a tourné plus longtemps et a fait beaucoup plus d'itérations cependant au niveau des derniers éléments de la liste, je retrouve l'erreur que j'ai mentionné précédemment ('Unable to connect to any servers', {'XXXX': OperationTimedOut('errors=Timed out creating connection (10 seconds), last_host=None',), 'XXXX': OperationTimedOut('errors=Timed out creating connection (10 seconds), last_host=None',), 'XXXX': OperationTimedOut('errors=Timed out creating connection (10 seconds), last_host=None',)}). J'ai l'impression que j'ai un peu moins surchargé le cluster mais qu'à la fin il finit par se surcharger de toute façon. Je commence à voir le bout du tunnel mais je ne l'ai pas encore atteint .
    Donc si vous avez encore d'autres suggestions pour améliorer ma connexion à cassandra, je suis preneuse !
    Je vous remercie déjà pour les réponses pertinentes précédentes.

    def concatenation_liste_valeurs_OP(site_id):
    is_qal = False
    SESSION = TPC.getSession(is_qal)

    df_js_data1 = SESSION.prepare("SELECT * FROM click.table2 WHERE type = 'base' and key = 'cf_list' and id1 = '{}';".format(site_id))
    js_data1 = SESSION.execute(df_js_data1)
    df_results1 = pd.DataFrame(list(js_data1))

    df_js_data2 = SESSION.prepare("SELECT * FROM click.conditionnal_zp where site_id = '{}' and type = 'list' and code = 'OP24';".format(site_id))
    js_data2 = SESSION.execute(df_js_data2)
    df_results2 = pd.DataFrame(list(js_data2))

    df_js_data3 = SESSION.prepare("select * from click.conditionnal_zp where site_id = 'XXXX' and type='list' and code = 'XXXX' and source_id = 'C_AGR02'")
    js_data3 = SESSION.execute(df_js_data3)
    df_results3 = pd.DataFrame(list(js_data3))

    SESSION.shutdown()

  8. #8
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    J'ai l'impression que dans chaque boucle vous ouvrez et fermez une session, si c'est le cas, retirez de la boucle l'ouverture de la session ainsi que la fermeture

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Ouverture de la session
     
    boucle
        ...
        ...
     
    Fermeture de la session
    Ensuite concentrez vous sur le temps pour effectuer toutes ces requêtes, le Timed out doit être adapté pour éviter d'interrompre le travail.

  9. #9
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 18
    Par défaut
    Après avoir mis l'ouverture de ma session avant ma boucle et la fermeture de ma session après ma boucle, je n'ai pas rencontré d'erreur. Vous avez trouvé d'où venez mon problème. Je vous remercie infiniment, vous êtes très fort

  10. #10
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Bonjour,

    Ce n'est que mon expérience et le fait de s'appuyer sur vos messages d'erreur... dans votre cas, en faisant une recherche sur internet vous pouvez comprendre ce que cela veut dire, mais pas forcément quoi faire. À vous d'avoir du bon sens en vérifiant ce que vous avez fait et pourquoi ces messages d'erreur apparaissent.

    Tout le travail n'est que interprétation

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RegEx] Petit Bug sur Expression Régulière
    Par Delphy113 dans le forum Langage
    Réponses: 2
    Dernier message: 25/09/2005, 20h48
  2. [Plugin][VE]Bug sur Eclipse Visual Project Editor
    Par capitaine_choc dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 31/05/2005, 14h51
  3. Bug sur glColor3i !
    Par ZiZouJH dans le forum OpenGL
    Réponses: 23
    Dernier message: 04/06/2004, 10h21
  4. Bug sur la prorpiété required d'un TField avec ADO ???
    Par denrette dans le forum Bases de données
    Réponses: 6
    Dernier message: 04/11/2003, 11h04
  5. Page de rapport de bug sur le site de Sun
    Par piff dans le forum Général Java
    Réponses: 1
    Dernier message: 03/03/2003, 18h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo