J'essaie de créer une application qui maximise l'aval de l'utilisateur en envoyant des données en continu. Y at-il une variable qui indique combien d'octets sont dans le tampon de sortie? Et je dis «hors tampon», mais y a-t-il un meilleur terme pour les données qui sont tamponnées avant d'être envoyées au client? Est-ce que je vais à ce sujet de la bonne façon? Cela ne semble pas pratique à self.transport.write() 100 mégaoctets.envoyer des données aléatoires avec Twisted
1
A
Répondre
2
La façon dont Twisted expose cette information se fait avec une paire d'API communément appelées «producteurs» et «consommateurs». Vous pouvez trouver a document à leur sujet sur le site Twisted.
Dans votre cas, un "pull producer" est probablement approprié, car vos données aléatoires ne proviennent probablement pas d'une source d'événement, mais peuvent être générées à la demande. Une esquisse pourrait ressembler à ceci (et nous espérons que le document lié ci-dessus expliquent pourquoi cela fonctionne):
from os import urandom
from zope.interface import implements
from twisted.internet.interfaces import IPullProducer
class RandomProducer(object):
implements(IPullProducer)
def __init__(self, consumer):
self.consumer = consumer
def resumeProducing(self):
self.consumer.write(urandom(2 ** 16))
def stopProducing(self):
pass
Ainsi, par exemple, lorsqu'une connexion est établie, vous pouvez enregistrer ce producteur avec le transport:
from twisted.internet.protocol import Protocol
class RandomProtocol(Protocol):
def connectionMade(self):
self.transport.registerProducer(RandomProducer(self.transport), False)
Ceci enverra des données aléatoires au client aussi vite que possible.
Questions connexes
- 1. Problème avec python Twisted - envoyer des données binaires
- 2. table SQL Populate avec des données aléatoires
- 3. StreamWriter ajoute des données aléatoires
- 4. Envoyer des données d'un protocole à un autre protocole dans Twisted?
- 5. Envoyer à partir du client Twisted vers le serveur Twisted, seulement cette manière
- 6. Python avec Twisted callInThread
- 7. Créer des données aléatoires pour les tests
- 8. Comment mettre à jour un champ avec des données aléatoires?
- 9. Envoyer des données via QueryString avec ASP.NET
- 10. Envoyer des données avec boost :: asio :: socket_base
- 11. Comment envoyer des données d'image avec HttpSendRequest?
- 12. Drupal 6: obtenir des données aléatoires base de données
- 13. Client UDP et serveur avec Twisted Python
- 14. générer des instances aléatoires avec JAXB
- 15. Problème avec Twisted et threads
- 16. Base de données pour Python Twisted
- 17. Obtenir des données aléatoires à l'aide des génériques
- 18. Comment obtenir des lignes aléatoires avec nhibernate?
- 19. Envoyer des données au serveur
- 20. jqGrid: envoyer des données d'édition
- 21. Détecter des chaînes aléatoires
- 22. CHOISIR des résultats 'aléatoires' avec des paramètres définis
- 23. Comment générer des ensembles de données statistiques quasi aléatoires?
- 24. Twisted transport.write
- 25. Db4o sélectionner des objets aléatoires
- 26. affichant des nombres aléatoires
- 27. sur des valeurs aléatoires
- 28. générer des énumérations aléatoires
- 29. table mise à jour avec des données aléatoires avec NEWID() ne fonctionne pas
- 30. comment envoyer des données avec l'élément d'étiquette de formulaire?