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