asyncore callbacks launching threads... ok to do?

Posted by sbartell on Stack Overflow See other posts from Stack Overflow or by sbartell
Published on 2011-01-16T07:26:17Z Indexed on 2011/01/16 7:53 UTC
Read the original article Hit count: 258

I'm unfamiliar with asyncore, and have very limited knowledge of asynchronous programming except for a few intro to twisted tutorials.

I am most familiar with threads and use them in all my apps. One particular app uses a couchdb database as its interface. This involves longpolling the db looking for changes and updates. The module I use for couchdb is couchdbkit. It uses an asyncore loop to watch for these changes and send them to a callback.

So, I figure from this callback is where I launch my worker threads. It seems a bit crude to mix asynchronous and threaded programming. I really like couchdbkit, but would rather not introduce issues into my program.

So, my question is, is it safe to fire threads from an async callback?

Here's some code...

{{{

def dispatch(change):
    global jobs, db_url # jobs is my queue
    db = Database(db_url)
    work_order = db.get(change['id']) # change is an id to the document that changed. 
                                  # i need to get the actual document (workorder)

    worker = Worker(work_order, db) # fire the thread
    jobs.append[worker]
    worker.start()
    return


main()
.
.
.

consumer.wait(cb=dispatch, since=update_seq, timeout=10000) #wait constains the asyncloop.

}}}

© Stack Overflow or respective owner

Related posts about python

Related posts about multithreading