Pour un système d'alerte d'inondation, mon Raspberry Pi sonne les cloches en temps quasi réel mais utilise un lecteur NAS comme boîte aux lettres pour envoyer des fichiers de données à un PC pour des graphiques et des rapports plus lents. arrière. Python sur le Pi prend exactement 10 secondes pour établir que le lecteur NAS juste à côté n'est pas disponible actuellement. J'ai besoin que cela se produise en moins d'une seconde pour chaque tentative d'accès, sinon les retards s'ajoutent et le Pi ne parvient pas à actualiser le chien de garde matériel dans le temps. (Le Pi effectue des tâches sur un cycle fixe: toutes les secondes, toutes les 15 secondes (watchdog), toutes les 75 secondes et toutes les 10 minutes.) Toutes les tentatives d'accès au disque sont précédées de tests avec try-except. Mais try-except ne vous aide pas, car des tests comme os.path.exists() ou open() prennent tous les deux 10 secondes avant de déclencher l'exception, même lorsque le disque NAS est éteint. C'est comme s'il y avait un délai d'expiration de 10 secondes dans le protocole de communication plutôt que dans le logiciel.Comment Python peut-il tester la disponibilité d'un disque NAS très rapidement?
Y a-t-il une façon de dire essayer, sauf de ne pas être si patient? Sinon, comment puis-je obtenir un indicateur plus immédiat de la capacité du lecteur NAS à maintenir le Pi à la prochaine lecture/écriture, afin que le Pi puisse abandonner et attendre le prochain cycle? J'ai fait toutes les files d'attente pour cela, mais c'est gaspillé si chaque vérification prend 10 secondes.
Pourriez-vous élaborer sur ce que vous essayez d'accomplir et ce que vous avez déjà essayé. Aussi, il suffit d'écrire «Je dois arriver en moins d'une seconde», c'est un peu trop large pour être utile. – Arminius
J'ai fait quelques modifications avec plus de détails - j'espère que cela clarifie –
Maintenant, je pense que je comprends mieux le problème. Y at-il une raison pour laquelle vous n'utilisez pas n'importe quelle forme de file d'attente sur le Pi pour vous assurer que les messages sont écrits indépendamment du statut de veille du NAS? Si je comprends bien votre question, ce script Python a une seconde pour terminer sa tâche. Alors pourquoi ne pas utiliser un second script dans la file d'attente des messages? Quelque chose comme utiliser le protocole MQTT avec un courtier MQTT pour le Pi. – Arminius