<div dir="ltr"><div><div>calling reactor.callLater within qt4reactor in an attempt to async non webkit work but not seeing expected behavior. Webkit locks while the callLater function executes.<br><br></div>Any insight appreciated. <br>
<br>Should I move real work into separate reactor and "broker" calls into qt4reactor/webkit. I have xmlrpc and websocket hooks into browser...but looking for guidance as to most direct method of brokering calls between reactors.<br>
<br>Any insight appreciated.<br><br></div><div>Having a blast using QT browser as a back-end, see demo site <a href="http://www.athleets.com">www.athleets.com</a>.<br><br></div><div>See below for amazon S3 upload worker that I expected to async, but in qt4reactor does not appear to work as planned.<br>
<br>from pyscewpt import fixed<br>from pyscewpt.s3 import bucket_util <br>import boto<br>from boto.s3.bucket import Bucket<br>from boto.s3.key import Key<br><br>from twisted.internet import defer, reactor<br><br>bucket_queue = defer.DeferredQueue()<br>
<br>def upload_worker(data):<br> print 'macth upload_worker', data<br> save_match( data['league'], data['twitter'], data['local_file'], data['meta'], data['profile'])<br>
return len(bucket_queue.pending)<br>def match_queue(ign=None):<br> print 'match_queue:', len(bucket_queue.pending), len(bucket_queue.waiting)<br> if ign is None or ign >= 2:<br> print 'requeue:', len(bucket_queue.pending) , len(bucket_queue.waiting)<br>
d = bucket_queue.get()<br> d.addCallback(upload_worker)<br> d.addBoth(match_queue)<br> return d<br> else:<br> return None<br>def queue_save_match(queue_dic):<br> bucket_queue.put(queue_dic)<br>
print 'queue_save_match', len(bucket_queue.pending), len(bucket_queue.waiting), queue_dic['twitter'] #<br> if len(bucket_queue.pending) >= 5 and len(bucket_queue.waiting) == 0:<br> print 'queue drop worker'<br>
reactor.callLater(0,match_queue,None) <br> <br>def save_match(league, twitter, systemfile, meta, profile):<br> print 'save_match:', twitter, profile<br> s3_filename = league + '/' + twitter + '.png'<br>
bucket_util.save_s3(<br> boto.connect_s3().get_bucket('~bucket'), <br> s3_filename, <br> None, <br> systemfile, <br> 'image/png', <br> 'public-read',<br>
meta + [('yes', False), ('no', False), ('maybe', False), ('profile', profile)] <br> )<br></div></div>