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