Tâches Cron chaque seconde

Hello, quelles sont les outils que vous utilisez pour exécuter vos tâches cron ?

j’utilise easycron depuis plusieurs années, mais il n’offre pas la possibilité d’exécuter une tâche chaque seconde et depuis peu j’en ai besoin, connaissez-vous en un qui fasse cela ?

Merci

Toutes les secondes… je pense que les crons ne sont plus adaptés à ton besoin.

Merci pour ta réponse

J’ai trouvé ça dans leur doc, mais ça ne semble pas marcher

Par quel moyen pourrai-je passer ?

Bonjour;

En effet, il n’est pas possible de lancer un cron toutes les secondes.
Le cron c’est au minimum 1 minute de granularité.

Donc oui comme l’indique ce que tu as trouvé il suffit de lancer un script toutes les minutes qui lui va lancer un script, attendre une seconde, lancer un script, attendre une seconde, … 60 fois.
Tu n’aura pas non plus la certitude que ton script soit lancé en réalité 60 fois car le temps de déclenchement du script prendra un eu de temps, donc au lieu d’attendre 1 seconde, tu fais une attendre de 800ms par exemple.

Si tu n’as pas la main sur ton CRON tu peux aussi utiliser un service de monitoring externe pour lancer tes script. J’utilise pour ma part https://doyoucheck.com/fr/ .
Ça te permet d’une part de lancer tes script et d’autres par être tenu au courant si ils plantent.

Il suffirait de lancer un script dans une boucle.
En python, en codant salement ça donnerait :

while(1):
my_task()
time.sleep(1)

Merci pour ta réponse, Ça nécessite d’avoir la fenêtre ouverte non ?

Yes je vais essayer de passer par cette solution.

Si tu as besoin d’un cron toutes les secondes, c’est que ce n’est pas un cron qu’il te faut.
Probablement plutôt un worker, un système à événements ou un script custom en daemon.

Si tu nous expliques ce qu’est censé faire ton cron, on pourra probablement te proposer une meilleure solution.

3 « J'aime »

Hello, merci pour ta réponse, c’est un cron pour le script Sendy (envoi d’email) ça envoi par paquet de 14 mails/seconde (limite imposé par Amazon ses) - donc je dois lancer le script chaque seconde pour déclencher les envois, si j’envoi chaque minute ou 10 secondes ça prendra trop de temps. Je dois vraiment trouver une solution pour faire les envois chaque seconde.

Pour l’instant ma solution de dépannage c’est d’avoir mis un refresh page chaque seconde. ça marche bien mais je dois garder l’ordi allumé tout le temps de l’envoi (environ 2,3h)

Une solution ?

Tu as essayé d’envoyer plutôt 840 mails / minute (ou un peu moins) ?
(Je ne connais ni Amazon ni Sendy. Sur les dédiés, on a toujours une file d’attente et éventuellement une fonction Throttle qui régule le débit donc jamais ce genre de problème.)

Sur la doc Amazon SES, ils indique que les serveurs n’accepterons pas forcément le débit max autorisé. Donc si tu as essayé 840 mails / minute et que ça a bloqué ce n’est pas obligatoirement pour une raison de quota dépassé. Tu peux peut-être essayer 750 ou 800 / minutes. Si ça passe, tu sera déjà sur un bon volume.

C’est par seconde, pas par minute, si je fais 800mails chaque minute, ça n’enverra que 14 mails

Tu peux utiliser les évents cloudwatch pour lancer une tâche toutes les minutes et utiliser une fonction pour lancer 60 tâches en 1 minute et ton problème est réglé :-):grin: