Bonjour,
Pour pouvoir planifier l'exécution d'un script Python, il faut tout d'abord
créer un script qui va se connecter à ton application Web (" batchXXX.py ")
:
#Les variables username et password sont celles qui seront utilisées pour
# que le batch se connecte à l'application afin d'exécuter le script
username="uuuuuuuu"
password="pppppppp"
#La variable zope reprend l'URL de connexion au site pour lequel vous
# souhaitez configurer un batch planifie
zope="http://www.monserveur.fr/moninstance"
#Import des library nécessaires
import sys, urllib
#Classe NoGUI_URLopener qui dérive de la classe FancyURLopener et qui
# permet d'imposer le login et le mot de passe saisis ci-dessus à la
# connexion à l'application
class NoGUI_URLopener(urllib.FancyURLopener):
def __init__(self, username, password, *args):
apply(urllib.FancyURLopener.__init__, (self,) + args)
self.username = username
self.password = password
self.asked = 0
def prompt_user_passwd(self, host, realm):
if self.asked:
raise "Unauthorised"
else:
self.asked = 1
return self.username, self.password
#Création de l'utilisateur se connectant à l'application à l'aide de la
# classe définie ci-dessus
urllib._urlopener = NoGUI_URLopener(username, password)
#Lancement du batch (script disponible dans une skin publiée dans
l'application
urllib.urlretrieve("%s/maSkin" % (zope))
Ensuite, dans la skins (" maSkins.pt "), on effectue l'opération souhaitée
ou on appelle un méthode sur un Tool qui fait l'action :
##parameters=REQUEST=None
from zLOG import LOG, DEBUG
portal = context.portal_url.getPortalObject()
#archivage des docs dans les sections
sections = portal['sections']
objects = sections.objectItems()
context.portal_workflow.classExpiredDocs(objects,'sections')
Enfin, on peut planifier l'exécution :
Sous Linux, ajouter cette ligne dans le fichier /etc/crontab:
50 0 * * * root python234
/usr/local/zope271b2_lot0/Products/produit1/ssProduit1/batchXXX.py
# Cette ligne permet de planifier l'exécution du script batchXXX.py
# par l'exécutable python /bin/python234 sous l'identité root, tous les
# jours à 00h50 (minutes(0-59) heures(0-23) jour-du-mois(0-31) mois(0-12)
jour-de-semaine(0-7))
Sous Windows, créer une tâche planifiée qui lancera le script suivant :
"C:\Program Files\Zope-2.7.2-0\bin\python.exe
C:\Zope-Instance\Products\produit1\ssProduit1\batchXXX.py"
Bon courage
Cordialement
Cédric Marfil
Unilog IT Services NRD
Marcq en Baroeul
Tél : 03.59.56.60.25
Mail : [EMAIL PROTECTED]
-----Message d'origine-----
De : [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] la part de BERNARDIN Pierre
Envoyé : dimanche 24 juillet 2005 12:02
À : [email protected]
Objet : [CPS-users-fr] Script Python / Windows
Bonjour
Sur mon site (Zope 2.7.0, Python 2.3, CPS3), je souhaite récupérer tous
les titres des publications depuis une semaine.
La solution : un script python lancé à l'aide d'un scheduler
Mais :
Quels schedulers utiliser (Windows, Linux (cron?)) ?
Où installer le script ?
Comment se connecte t-il à la zodb ?
Et si il y a plusieurs instances sur le serveur ?
Exemples de scripts ?
Merci d'avance
> Pierre BERNARDIN
>
_______________________________________________
cps-users-fr
Adresse de la liste : [email protected]
Gestion de l'abonnement :
<http://lists.nuxeo.com/mailman/listinfo/cps-users-fr>
_______________________________________________
cps-users-fr
Adresse de la liste : [email protected]
Gestion de l'abonnement : <http://lists.nuxeo.com/mailman/listinfo/cps-users-fr>