質問
以下のコードを使用して、CouchDBインスタンスへのリンクをスラッグするため、データベースが遅い場合はGUIに何が起こるかをテストできます。
# 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)
コードは、ポートフォワーダーの例に基づいています。
ドキュメントを読み、削除し、更新するときに期待どおりに機能しますが、GUIハングを挿入するときに機能します。直接リンクして、上記のコードを見逃している場合、正常に動作を挿入します!
データベースと話しているPythonコードはcouchdb-python(http://code.google.com/p/couchdb-python/)であり、次のステートメントを保存して挿入します
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
しかし、1つは機能し、もう1つは機能しません。これをデバッグする方法についてのヒントはありますか、それとも何がうまくいかないのでしょうか?
正しい解決策はありません
所属していません StackOverflow