¿Qué está mal con este código?
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