Pregunta

Estoy usando el código a continuación para golpear el enlace a una instancia de CouchDB, para que pueda probar lo que le sucede a la GUI si la base de datos es lenta.

# 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)

El código se basa en el ejemplo del reenvío del puerto.

Funciona como se esperaba cuando leo, elimino y actualizo un documento, pero cuando inserto la GUI cuelga. Cuando vinculé directamente, perdiendo el código anterior, ¡las inserciones funcionan bien!

El código Python que habla con la base de datos es Couchdb-Python (http://code.google.com/p/couchdb-python/) y guardar e insertar ejecutar la siguiente declaración

    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

Sin embargo, uno funciona y el otro no. ¿Alguien tiene alguna pista sobre cómo depurar esto o qué podría estar mal?

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top