Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Socket PyW

14 réponses
Avatar
Yves Lange
Hello,
c'est denouveau moi... ^^

Bon j'ai fait mon application python client/serveur en TCP/IP et ça
marche très bien. Mais je voulais cacher le client car la fenêtre est
très gênante quand je travail surtout quand je transfert 100mo ;).

Le problème est que quand je passe en pyw (sans console) et bien
l'application reste 3 à 4secondes et se referme automatiquement.

Le problème c'est que je ne peux pas voir le message d'erreur et que sur
le serveur (comme je n'ai pas mis de try et except) un message d'erreur
apparaît: (..., "Software caused connection abort"). Comment faire pour
que pyw ne s'arrête pas ? Y a-t-il une limite avec l'utilisation de
python sans console à propos des sockets ?

Merci

10 réponses

1 2
Avatar
hg
Yves Lange wrote:

Hello,
c'est denouveau moi... ^^

Bon j'ai fait mon application python client/serveur en TCP/IP et ça
marche très bien. Mais je voulais cacher le client car la fenêtre est
très gênante quand je travail surtout quand je transfert 100mo ;).

Le problème est que quand je passe en pyw (sans console) et bien
l'application reste 3 à 4secondes et se referme automatiquement.

Le problème c'est que je ne peux pas voir le message d'erreur et que sur
le serveur (comme je n'ai pas mis de try et except) un message d'erreur
apparaît: (..., "Software caused connection abort"). Comment faire pour
que pyw ne s'arrête pas ? Y a-t-il une limite avec l'utilisation de
python sans console à propos des sockets ?

Merci


utiliser try/except serait une bonne idée.

Lance le client depuis la console: python.exe file.pyw ... tu verra alors
ton erreur

hg

Avatar
hg
Yves Lange wrote:

Hello,
c'est denouveau moi... ^^

Bon j'ai fait mon application python client/serveur en TCP/IP et ça
marche très bien. Mais je voulais cacher le client car la fenêtre est
très gênante quand je travail surtout quand je transfert 100mo ;).

Le problème est que quand je passe en pyw (sans console) et bien
l'application reste 3 à 4secondes et se referme automatiquement.

Le problème c'est que je ne peux pas voir le message d'erreur et que sur
le serveur (comme je n'ai pas mis de try et except) un message d'erreur
apparaît: (..., "Software caused connection abort"). Comment faire pour
que pyw ne s'arrête pas ? Y a-t-il une limite avec l'utilisation de
python sans console à propos des sockets ?

Merci
PS: la différence entre .py et .pyw (sous windows) est l'association de

fichiers: python.exe versus pythonw.exe ... et non à ma connaissance il n'y
aucune contrainte supplémentaire à utiliser pythonw.exe

hg

Avatar
hg
Yves Lange wrote:

Hello,
c'est denouveau moi... ^^

Bon j'ai fait mon application python client/serveur en TCP/IP et ça
marche très bien. Mais je voulais cacher le client car la fenêtre est
très gênante quand je travail surtout quand je transfert 100mo ;).

Le problème est que quand je passe en pyw (sans console) et bien
l'application reste 3 à 4secondes et se referme automatiquement.

Le problème c'est que je ne peux pas voir le message d'erreur et que sur
le serveur (comme je n'ai pas mis de try et except) un message d'erreur
apparaît: (..., "Software caused connection abort"). Comment faire pour
que pyw ne s'arrête pas ? Y a-t-il une limite avec l'utilisation de
python sans console à propos des sockets ?

Merci
Oula, je viens de passer 1heure à débuguer mon script client et

appartement si on écrit ça:

while 1:
print "hello"

dans un script python sans console et bien, il bug !!!

Quelqu'un a une idée


J'ai remarqué que sous windows (et oui), il pouvait y avoir des problèmes à
envoyer vers sys.stdout depuis une application graphique.

Donc rediriger stdout ou utiliser logging comme précedemment proposé semble
être la solution.

hg


Avatar
Yves Lange
Hello,
c'est denouveau moi... ^^

Bon j'ai fait mon application python client/serveur en TCP/IP et ça
marche très bien. Mais je voulais cacher le client car la fenêtre est
très gênante quand je travail surtout quand je transfert 100mo ;).

Le problème est que quand je passe en pyw (sans console) et bien
l'application reste 3 à 4secondes et se referme automatiquement.

Le problème c'est que je ne peux pas voir le message d'erreur et que sur
le serveur (comme je n'ai pas mis de try et except) un message d'erreur
apparaît: (..., "Software caused connection abort"). Comment faire pour
que pyw ne s'arrête pas ? Y a-t-il une limite avec l'utilisation de
python sans console à propos des sockets ?

Merci
Oula, je viens de passer 1heure à débuguer mon script client et

appartement si on écrit ça:

while 1:
print "hello"

dans un script python sans console et bien, il bug !!!

Quelqu'un a une idée

Avatar
William Dode
On 24-01-2007, hg wrote:
Yves Lange wrote:

Hello,
c'est denouveau moi... ^^

Bon j'ai fait mon application python client/serveur en TCP/IP et ça
marche très bien. Mais je voulais cacher le client car la fenêtre est
très gênante quand je travail surtout quand je transfert 100mo ;).

Le problème est que quand je passe en pyw (sans console) et bien
l'application reste 3 à 4secondes et se referme automatiquement.

Le problème c'est que je ne peux pas voir le message d'erreur et que sur
le serveur (comme je n'ai pas mis de try et except) un message d'erreur
apparaît: (..., "Software caused connection abort"). Comment faire pour
que pyw ne s'arrête pas ? Y a-t-il une limite avec l'utilisation de
python sans console à propos des sockets ?

Merci


utiliser try/except serait une bonne idée.


Et logging pour enregistrer l'erreur ;-) !

--
William Dodé - http://flibuste.net
Développeur informatique indépendant


Avatar
Laurent Pointal

Oula, je viens de passer 1heure à débuguer mon script client et
appartement si on écrit ça:

while 1:
print "hello"

dans un script python sans console et bien, il bug !!!

Quelqu'un a une idée


Peut-être qq chose comme:

class PuitsSansFond (object) :
def write(self,s) :
pass


sys.stdout = PuitsSansFond()
sys.stderr = PuitsSansFond()

[a tester]

Avatar
jean-michel bain-cornu
Le problème c'est que je ne peux pas voir le message d'erreur et que sur
le serveur (comme je n'ai pas mis de try et except) un message d'erreur
apparaît: (..., "Software caused connection abort"). Comment faire pour
que pyw ne s'arrête pas ? Y a-t-il une limite avec l'utilisation de
python sans console à propos des sockets ?

Merci
utiliser try/except serait une bonne idée.



Et logging pour enregistrer l'erreur ;-) !

Par parenthèse, quand on génère une application utilisant wx avec

py2exe, les éventuels messages sont enregistrés automatiquement dans un
fichier nom_du_point_exe.log.
C'est pratique une fois que l'application est déployée si l'on a pas
prévu d'autre moyen d'enregistrer les erreurs.

Par contre je ne sais pas si ça vient de py2exe ou de wx...

A+
jm



Avatar
hg
NicolasP wrote:

Pas avec wxPython. En tout cas, j'ai jamais eu de problèmes. Sauf si tu
édites ton appli avec IDLE. IDLE lance ton appli dans le même contexte que
l'éditeur. Du coup, si tu plantes ton appli, tu plantes IDLE. Et une
boucle infinie, c'est comme planter l'appli.


En fait ça ne plantait pas l'appli mais semblait avoir un impact sur son
dialogue avec une carte à puce

hg

Avatar
hg
hg wrote:

NicolasP wrote:

Pas avec wxPython. En tout cas, j'ai jamais eu de problèmes. Sauf si tu
édites ton appli avec IDLE. IDLE lance ton appli dans le même contexte
que l'éditeur. Du coup, si tu plantes ton appli, tu plantes IDLE. Et une
boucle infinie, c'est comme planter l'appli.


En fait ça ne plantait pas l'appli mais semblait avoir un impact sur son
dialogue avec une carte à puce

hg


mais bon, c'était aussi peut-être un bug à moi qui n'apparaissait pas sous
*nix.

hg


Avatar
NicolasP

J'ai remarqué que sous windows (et oui), il pouvait y avoir des problèmes à
envoyer vers sys.stdout depuis une application graphique.


Pas avec wxPython. En tout cas, j'ai jamais eu de problèmes. Sauf si tu édites ton appli avec IDLE. IDLE lance ton appli dans le même contexte que l'éditeur. Du coup, si tu plantes ton appli, tu plantes IDLE. Et une boucle infinie, c'est comme planter l'appli.


Donc rediriger stdout ou utiliser logging comme précedemment proposé semble
être la solution.

Avec wxPython, tu as 3 choix :

1 : wxPython intercepte la console et la gère dans sa propre fenêtre
2 : wxPython intercepte la console et envoie le tout dans un fichier
3 : wxPython n'intercepte pas la console

C'est la troisième solution que j'utilise.

J'utilise Eclipse comme environnement de développement avec pydev comme plugin.
Quand tu exécutes l'appli, elle est lancée dans un nouveau processus. Avec la solution 3, Eclipse récupère toutes les traces et les affiche dans sa console. Dans le cas d'une exception, tu peux cliquer sur la trace pour t'amener directement sur la ligne qui a généré l'erreur. Et si ton appli est plantée (ou pas), tu peux tuer le processus directement depuis éclipse.
Avec la solution 3, quand tu déploie ton application avec py2exe, si une trace sort sur la console, celle-ci est automatiquement redirigée vers un fichier .log.

Nicolas

1 2