Comments on: Importer des données, retour d’expérience http://sametmax.com/importer-des-donnees-retour-dexperience/ Du code, du cul Mon, 28 Oct 2019 11:54:55 +0000 hourly 1 https://wordpress.org/?v=4.9.7 By: Sam http://sametmax.com/importer-des-donnees-retour-dexperience/#comment-179029 Thu, 23 Jun 2016 12:38:51 +0000 http://sametmax.com/?p=8772#comment-179029 Faut justifier quand on fait ce genre d’affirmation..

]]>
By: Yan http://sametmax.com/importer-des-donnees-retour-dexperience/#comment-179002 Wed, 22 Jun 2016 16:02:41 +0000 http://sametmax.com/?p=8772#comment-179002 Bon j’arrive un peu tard mais pour moi l’insert doit se faire depuis la DB via un appel de SP par exemple, sinon pour le reste on est tous confronté aux mêmes problèmes, dire que mon boss pense que je m’amuse…

]]>
By: Sam http://sametmax.com/importer-des-donnees-retour-dexperience/#comment-18830 Wed, 22 Jan 2014 18:57:55 +0000 http://sametmax.com/?p=8772#comment-18830 Idée noire de franquin ?

]]>
By: Réchèr http://sametmax.com/importer-des-donnees-retour-dexperience/#comment-18819 Wed, 22 Jan 2014 12:07:05 +0000 http://sametmax.com/?p=8772#comment-18819 Si un jour vous faites un article sur l’idempotence, voici une image sympa qui pourrait illustrer le propos. (surtout la dernière case).

http://3.bp.blogspot.com/-BRTDh6M-WxM/URzAwbrIh0I/AAAAAAAACIA/91HsYg-04S0/s1600/franquin-idees-noires.guillotine.jpg

]]>
By: mentat http://sametmax.com/importer-des-donnees-retour-dexperience/#comment-18656 Sat, 18 Jan 2014 11:19:22 +0000 http://sametmax.com/?p=8772#comment-18656 D’accord avec TOUS les points cités.
J’ajouterais que j’utilise des générateurs que j’enchaine :
on lit une ligne | on traite/nettoie les données | on l’insère

Comme un pipe sous un shell unix
On décompose bien les traitements comme cela. Les tests peuvent être enchainés et ajouter/enlever très facilement.

Et les performances sont top

]]>
By: Sam http://sametmax.com/importer-des-donnees-retour-dexperience/#comment-18643 Fri, 17 Jan 2014 14:39:07 +0000 http://sametmax.com/?p=8772#comment-18643 C’est vrai, mais il faut faire attention à ce que le code d’import ne soit pas exécuté dans la même VM qu’un autre projet, sinon les exceptions seront toutes logguées. Un tips très utile cela dit.

]]>
By: Maxime L. http://sametmax.com/importer-des-donnees-retour-dexperience/#comment-18641 Fri, 17 Jan 2014 14:11:30 +0000 http://sametmax.com/?p=8772#comment-18641 Si je peux apporter ma pierre à l’édifice… En référence à ce paragraphe :

Mettez aussi un gros try / except générique qui loggue toute exception, pour pouvoir faire un debug post mortem. Idéalement, faites le dumper locals() et envoyez-vous un mail d’alerte. Vous ne voulez pas que le script ne tourne pas pendant une journée sans que vous le sachiez.

Pour la gestion des exceptions, je changerai carrément le hook de base de Python.

import sys

def myexcepthook(type, value, tb):
    import traceback
    from email.mime.text import MIMEText
    from subprocess import Popen, PIPE
    tbtext = ''.join(traceback.format_exception(type, value, tb))
    msg = MIMEText("There was a problem with your program:\n\n" + tbtext)
    msg["From"] = "root+importer@domain.com"
    msg["To"] = "admin@domain.com"
    msg["Subject"] = "[Sam&Max Importer] Crash report (Exception raised)"
    p = Popen(["/usr/sbin/sendmail", "-t"], stdin=PIPE)
    p.communicate(msg.as_string())


    reload()  # relaunch the importer if possible

sys.excepthook = myexcepthook

Ainsi, un mail est envoyé dès qu’une exception n’est pas géré dans le code (donc ça équivaut à un gros try/except), il exécute cette fonction. C’est plus propre et plus maintenable à mon goût :-)

Référence StackOverflow de la réponse qui m’a inspiré

]]>
By: Recher http://sametmax.com/importer-des-donnees-retour-dexperience/#comment-18638 Fri, 17 Jan 2014 10:53:59 +0000 http://sametmax.com/?p=8772#comment-18638 Pour les références externes, on a parfois besoin de faire une “memoization” / “lazy evaluation” (je ne sais pas quel serait le terme exact).

Exemple : on doit lire plusieurs milliards de ligne de données, dont l’un des champs est une valeur numérique : “id_position_sexuelle” (plusieurs lignes peuvent avoir la même valeur). Pour connaître le nom de la position correspondante, on doit interroger un serveur externe. Mais ce serveur est vilain, il ne donne qu’un seul nom à la fois, à partir de l’id qu’on lui envoie, et il ne peut pas donner le nombre total de position existante. On ne peut donc pas pré-récupérer tout les noms de positions pour les mettre en cache.

Dans ce cas, à chaque fois qu’on trouve un id inconnu dans les données à lire, on interroge le serveur externe, et on enregistre le nom dans un fichier en local. Plus tard, si on retombe sur le même id, pas besoin de réinterroger le serveur.

]]>
By: Luigi http://sametmax.com/importer-des-donnees-retour-dexperience/#comment-18637 Fri, 17 Jan 2014 07:14:11 +0000 http://sametmax.com/?p=8772#comment-18637 Très pertinent, comme d’habitude.

]]>
By: Stéphane http://sametmax.com/importer-des-donnees-retour-dexperience/#comment-18634 Thu, 16 Jan 2014 23:44:13 +0000 http://sametmax.com/?p=8772#comment-18634 Les remarques de maître Capello :

Ellispis -> Ellipsis

dans la mauvais langue -> dans la mauvaise langue

si on peut processer la donnée -> si on peut traiter la donnée (?)

LEUR système n’escape pas -> LEUR système ne protège pas

une query de plus -> une requête supplémentaire

ajoutez les indexes -> ajoutez les index

]]>