Maison >développement back-end >Tutoriel Python >Comment exécuter des scripts Python via Crontab pour surveiller l'état du serveur et créer de nouvelles instances ?
Problème : Les utilisateurs peuvent rencontrer des difficultés lorsqu'ils tentent d'exécuter des scripts Python à l'aide de la crontab Linux, en particulier lorsqu'ils souhaitent exécutez-les toutes les 10 minutes. Diverses solutions, telles que la modification du fichier anacron ou l'utilisation de crontab -e, peuvent s'avérer inefficaces, laissant les utilisateurs s'interroger sur la nécessité de redémarrer un service spécifique ou sur le fichier qui doit être modifié pour la configuration.
Réponse :
Pour résoudre ce problème, référez-vous au guide suivant :
*/10 * * * * /usr/bin/python /home/souza/Documents/Listener/listener.py
Configuration du fichier :
Le fichier à modifier est le fichier crontab, accessible et modifié à l'aide de la commande crontab -e.
Script :
Votre script Python doit être correctement configuré pour exécuter les actions souhaitées. Pour référence, voici le script fourni, adapté pour s'exécuter toutes les 10 minutes :
<code class="python">#!/usr/bin/python # -*- coding: iso-8859-15 -*- import json import os import pycurl import sys import cStringIO if __name__ == "__main__": name_server_standart = "Server created by script %d" json_file_standart = """{ "server" : { "name" : "%s", "imageRef" : "%s", "flavorRef" : "%s" } }""" curl_auth_token = pycurl.Curl() gettoken = cStringIO.StringIO() curl_auth_token.setopt(pycurl.URL, "http://192.168.100.241:8774/v1.1") curl_auth_token.setopt(pycurl.POST, 1) curl_auth_token.setopt( pycurl.HTTPHEADER, ["X-Auth-User: cpca", "X-Auth-Key: 438ac2d9-689f-4c50-9d00-c2883cfd38d0"], ) curl_auth_token.setopt(pycurl.HEADERFUNCTION, gettoken.write) curl_auth_token.perform() chg = gettoken.getvalue() auth_token = chg[ chg.find("X-Auth-Token: ") + len("X-Auth-Token: ") : chg.find("X-Server-Management-Url:") - 1 ] token = "X-Auth-Token: {0}".format(auth_token) curl_auth_token.close() # ---------------------------- getter = cStringIO.StringIO() curl_hab_image = pycurl.Curl() curl_hab_image.setopt(pycurl.URL, "http://192.168.100.241:8774/v1.1/nuvemcpca/images/7") curl_hab_image.setopt(pycurl.HTTPGET, 1) # Removing this line allows the script to run. curl_hab_image.setopt(pycurl.HTTPHEADER, [token]) curl_hab_image.setopt(pycurl.WRITEFUNCTION, getter.write) # curl_list.setopt(pycurl.VERBOSE, 1) curl_hab_image.perform() curl_hab_image.close() getter = cStringIO.StringIO() curl_list = pycurl.Curl() curl_list.setopt(pycurl.URL, "http://192.168.100.241:8774/v1.1/nuvemcpca/servers/detail") curl_list.setopt(pycurl.HTTPGET, 1) # Removing this line allows the script to run. curl_list.setopt(pycurl.HTTPHEADER, [token]) curl_list.setopt(pycurl.WRITEFUNCTION, getter.write) # curl_list.setopt(pycurl.VERBOSE, 1) curl_list.perform() curl_list.close() # ---------------------------- resp = getter.getvalue() con = int(resp.count("status")) s = json.loads(resp) lst = [] for i in range(con): lst.append(s["servers"][i]["status"]) for j in range(len(lst)): actual = lst.pop() print actual if actual != "ACTIVE" and actual != "BUILD" and actual != "REBOOT" and actual != "RESIZE": print "Enters the if block." f = file("counter", "r+w") num = 0 for line in f: num = line content = int(num) + 1 ins = str(content) f.seek(0) f.write(ins) f.truncate() f.close() print "Increments the counter." json_file = file("json_file_create_server.json", "r+w") name_server_final = name_server_standart % content path_to_image = "http://192.168.100.241:8774/v1.1/nuvemcpca/images/7" path_to_flavor = "http://192.168.100.241:8774/v1.1/nuvemcpca/flavors/1" new_json_file_content = json_file_standart % ( name_server_final, path_to_image, path_to_flavor, ) json_file.seek(0) json_file.write(new_json_file_content) json_file.truncate() json_file.close() print "Updates the JSON file." fil = file("json_file_create_server.json") siz = os.path.getsize("json_file_create_server.json") cont_size = "Content-Length: %d" % siz cont_type = "Content-Type: application/json" accept = "Accept: application/json" c_create_servers = pycurl.Curl() logger = cStringIO.StringIO() c_create_servers.setopt(pycurl.URL, "http://192.168.100.241:8774/v1.1/nuvemcpca/servers") c_create_servers.setopt(pycurl.HTTPHEADER, [token, cont_type, accept, cont_size]) c_create_servers.setopt(pycurl.POST, 1) c_create_servers.setopt(pycurl.INFILE, fil) c_create_servers.setopt(pycurl.INFILESIZE, siz) c_create_servers.setopt(pycurl.WRITEFUNCTION, logger.write) print "Executes the curl command." c_create_servers.perform() print logger.getvalue() c_create_servers.close()</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!