Question

J'utilise le code ci-dessous pour lier le lien vers une instance CouchDB, donc je peux tester ce qui arrive à l'interface graphique si la base de données est lente.

# coding=utf8   slowCoach.py - a server that delays every message 
#      thus making the database crawl. 
import eventlet
from time import sleep
def closed_callback():
    print "called back"
def forward(source, dest, cb = lambda: None):
    """Forwards bytes unidirectionally from source to dest"""
    while True:
        d = source.recv(32384)
        if d == '':
            cb()
            break
        sleep(0.3)    
        dest.sendall(d)
listener = eventlet.listen(('localhost', 5981 ))
while True:
    client, addr = listener.accept()
    server = eventlet.connect(('192.168.0.1',5984))
    # two unidirectional forwarders make a bidirectional one
    eventlet.spawn_n(forward, client, server, closed_callback)
    eventlet.spawn_n(forward, server, client)

Le code est basé sur l'exemple du transfert de port.

Cela fonctionne comme prévu lorsque je lis, supprime et met à jour un document, mais lorsque j'insère l'interface graphique. Lorsque je lie directement, manquant le code ci-dessus, les inserts fonctionnent très bien!

Le code Python qui parle à la base de données est Couchdb-python (http://code.google.com/p/Couchdb-python/) et les deux enregistrer et insérer exécutent la déclaration suivante

    try: 
        self.db.save(dic)
    except couchdb.ResourceConflict: # wrong _rev - updated by someone else
        return False
    for fld in ['_id','_rev']:  # set id and rev to current values 
        value = dic[fld]
        setattr(self, fld, value)
    self._status = CouchObject.CLEAN
    return self

Pourtant, l'un fonctionne et l'autre ne le fait pas. Quelqu'un a-t-il un indice sur la façon de déboguer cela, ou qu'est-ce qui pourrait mal tourner?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top