Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2779 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  [resolut] Creation d'un service pour windows

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[resolut] Creation d'un service pour windows

n°1405201
nebucade
Posté le 12-07-2006 à 09:10:34  profilanswer
 

Bonjour,
 
 
Voila, je veu créée un service windows, pour ecouté un port, et en fonction de ce que j'ai, faire differente action.
 
le code :

Code :
  1. # Permet d'ecouter un port et d'executer des commande;
  2. from socket import *
  3. from string import *
  4. import os
  5. import win32service
  6. import win32event
  7. import win32evtlog
  8. import win32evtlogutil
  9. import win32serviceutil
  10. import win32process
  11. class WinService (win32serviceutil.ServiceFramework):
  12.     _svc_name_ = "Servive_Onduleur"
  13.     _svc_display_name_ = "Gestion arret du serveur, par onduleur !"
  14.    
  15.        
  16.     def __init__(self, args):
  17.         win32serviceutil.ServiceFramework.__init__(self, args)
  18.         # Evenement declenché lors de l'arret du service
  19.         self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
  20.         # Evenement dont on se sert pour la boucle infinie
  21.         self.hService = win32event.CreateEvent(None, 0, 0, None)
  22.         self.log_type = "Gestion des appel de l'onduleur"
  23.     def SvcStop (self):
  24.        
  25.         self.irc.close()
  26.         self.identd.close()
  27.         # Arret
  28.         win32evtlogutil.ReportEvent(self.log_type, 2, eventType=win32evtlog.EVENTLOG_INFORMATION_TYPE, strings=["Message d'arret"])
  29.         self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
  30.         win32event.SetEvent(self.hWaitStop)
  31.        
  32.     def SvcDoRun(self):
  33.         # Pas d'initialisation
  34.         # Declenche l'evenement hService qui permet de passer dans
  35.         # en continu dans la fonction DoBatch ()
  36.         win32evtlogutil.ReportEvent(self.log_type, 1, eventType=win32evtlog.EVENTLOG_INFORMATION_TYPE, strings=["Message de démarrage"])
  37.         win32event.SetEvent (self.hService)
  38.         # Boucle
  39.         while 1:
  40.             # Attend une demande d'arret ou la fin de la tempo
  41.             rc = win32event.WaitForMultipleObjects((self.hWaitStop,self.hService),0, win32event.INFINITE)
  42.             # Arrete le service
  43.             if rc==win32event.WAIT_OBJECT_0:
  44.                 # Stop event
  45.                 break
  46.                 # Traitement
  47.             else:
  48.                 # Mon service !
  49.                 self.DoBatch ()
  50.                 win32event.SetEvent (self.hService)
  51.             # Fin
  52.             self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING, 5000)
  53.     def DoBatch (self):
  54.         # C'est dans cette fonction que tu colle ton code. C'est ce qui sera exécuté par le service !
  55.         self.identd = socket(AF_INET, SOCK_STREAM)
  56.         self.identd.bind(('', 32000))
  57.         self.identd.listen(1)
  58.         while 1:
  59.             self.irc, self.irchost = self.identd.accept()
  60.             text = self.irc.recv(512)
  61.             if self.irchost[0]=='10.1.1.4':
  62.                 text = split(text)
  63.                 if text[-1]=="fait_dodo":
  64.                     os.system("shutdown /s" )
  65.             self.irc.close()
  66.        
  67. if __name__=='__main__':
  68.     win32serviceutil.HandleCommandLine(WinService)


 
 
je sais le code n'est pas tres propre mais c'est pour un teste pour le moment.
 
Donc, quant  je le compile pas de probleme, quant je l'execute en install pas de probleme il ce met bien dans le gestionnaire des service windows.
 
Par contre quant il demare il s'arrete et me dit :
 
 
The instance's SvcRun() method failed  
  File "win32serviceutil.pyc", line 715, in SvcRun  
exceptions.AttributeError: WinService instance has no attribute 'SvcDoRun'
 
 
Merci de bien vouloir m'aidé meme si vous n'avais pas la reponse je prend toute les idées.
 
@+


Message édité par nebucade le 22-09-2006 à 11:36:01
mood
Publicité
Posté le 12-07-2006 à 09:10:34  profilanswer
 

n°1426378
gocho
Posté le 17-08-2006 à 01:58:42  profilanswer
 

sans en etre sur puisqu'il manque cette ligne 715 ou survient l'erreur...
Apparemment ton instance de cette classe a bien ete creee mais à cette fameuse ligne 715 tu fais appel à l'attribut WinService.SvcDoRun alors qu'il s'agit d'une methode donc à appeler par

Code :
  1. WinService.SvcDoRun()


enfin il manque les parentheses quoi (je pense :o)


Message édité par gocho le 17-08-2006 à 02:00:31

---------------
Mon feedback
n°1427036
nebucade
Posté le 18-08-2006 à 10:30:46  profilanswer
 

En fait la ligne 715 vient du librairy win32serviceutil est ce n'est pas moi qu'il l'est fait. (je sais on s'en doute lol)
 
je te rassure les parentheses y sont bien
 
merci quant meme

n°1435187
nebucade
Posté le 01-09-2006 à 15:37:42  profilanswer
 

Et bien apres quelque teste toujours le meme probleme !!
 
Personne n'aurai une idée, s'il vous plait

n°1435448
gocho
Posté le 01-09-2006 à 23:42:57  profilanswer
 

toujours le meme message d'erreur? pourrais tu mettre la portion de code indiquee dans le message d'erreur stp.
les alentours de la ligne 715 du fichier win32serviceutil.pyc


---------------
Mon feedback
n°1445636
nebucade
Posté le 21-09-2006 à 10:23:55  profilanswer
 

   def SvcRun(self):
 
        self.ReportServiceStatus(win32service.SERVICE_RUNNING)
        self.SvcDoRun()
        # Once SvcDoRun terminates, the service has stopped.
        # We tell the SCM the service is still stopping - the C framework
        # will automatically tell the SCM it has stopped when this returns.
        self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  [resolut] Creation d'un service pour windows

 

Sujets relatifs
Automatiser la création d'un script à partir d'une listefichier le plus récent en dos/windows
[résolu]Lancer un programme au demarrage de windowsAPI Windows quels livres pour apprendre ?
Création de factures en PDF --- RésoluLe contenu de l'explorateur windows sous html
[Win32, C++] Création d'une progressbar[MYSQL] Probleme de creation de table
DHCP (Windows) : reservation adresse IP[Access] Création de graphique
Plus de sujets relatifs à : [resolut] Creation d'un service pour windows


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR