2017-01-07 1 views
0

Je suis novice dans le domaine de la programmation événementielle et je lisais à propos de Twisted.Que se passe-t-il s'il y a des événements chronométrés lorsque le réacteur de Twisted bloque?

Dans cette question au sujet du réacteur, How does Python's Twisted Reactor work?

timeout = time_until_next_timed_event() 
events = wait_for_events(timeout) 
events += timed_events_until(now()) 

ne serait pas là logiquement un scénario où timeout = time_until_next_timed_event() a été calculé comme 12 Hours et event = wait_for_events(timeout) attend juste pour 12 Hours puisqu'aucun déclenchement externe est arrivé et il a manqué de peu au service tous les événements timed_events_until(now()) qui, idéalement, il pourrait avoir? N'est-ce pas un compromis? Je suis assez sûr qu'il me manque quelque chose, quelqu'un peut-il clarifier cela d'un point de vue logique?

Répondre

2

Si l'événement temporisé suivant est dans 12 heures, alors par définition, il sera 12 heures jusqu'à ce que timed_events_until(now()) renvoie tous les événements.

+0

Merci d'avoir répondu! Donc vous voulez dire qu'il n'y a rien de ** interne ** (quelque chose en dehors des choses qu'il surveille ** extérieurement **) dans ce système qui peut déclencher un événement ** chronométré ** parce qu'il est ** single threaded ** et le * * seulement ** le travail qu'il fait est ** attendre ** pour une entrée externe? Alors tout a un sens. Il est possible que l'un de ces événements externes puisse provoquer un événement chronométré, mais cela sera pris en compte dans le cadre de la ** boucle suivante **, donc c'est très bien aussi. J'espère que ma question a du sens. S'il vous plaît faites-moi savoir vos pensées. – Nishant

+0

Une autre façon de poser cette question est, dans un système comme celui-ci, il n'y aura pas d'événements programmés qui se produisent pendant que vous attendez - Si non, pourquoi? Est-ce parce que la seule chose qui peut faire quelque chose est basée sur un événement externe (typiquement un serveur est piloté par le client). – Nishant

+1

Nous savons quand le prochain événement chronométré se produira (c'est ce que signifie "chronométré", cela arrive à un moment donné). Donc c'est combien de temps nous dormons. Pourquoi ne dors-tu pas à travers les réunions du matin? Parce qu'avant d'aller dormir, vous regardez votre calendrier pour le jour suivant, et réglez votre réveille-matin pour qu'il s'éteigne au bon moment. Je pense que c'est plus simple que vous ne le pensez :-) –