[storm] using twisted-storm
Lee Connell
lee.a.connell at gmail.com
Mon Apr 20 19:08:57 BST 2009
Thanks James, I didn't mean to take you away from the list, I will remember
to use 'reply all' in the future. thank you!
On Sun, Apr 19, 2009 at 9:59 PM, James Henstridge <james at jamesh.id.au>wrote:
> Please use the "reply to all" feature of your mail client, so that the
> mailing list gets copied on the replies. I'm happy to help you in a
> public forum where others can benefit, but less inclined to do so in
> private.
>
> On Mon, Apr 20, 2009 at 9:43 AM, Lee Connell <lee.a.connell at gmail.com>
> wrote:
> > ok, so what if i set the threadpoolsize to only 1, this way all my db
> calls
> > will reuse this thread and i won't have to worry about thread
> > synchronization against the orm from multiple threads trying to access
> it.
> > Would this make sense?
>
> I'd leave the maximum pool size above one, but setting the minimum
> pool size to your average amount of concurrency is probably a good
> idea.
>
> If there are other processes accessing the database, it is always
> possible to have a serialised transaction fail.
>
> If the database code you defer to a thread has no side effects other
> than changes to the database, it is pretty easy to implement a retry
> policy. A decorator like the following could help:
>
> from psycopg2.extensions import TransactionRollbackError
> from storm.exceptions import DisconnectionError, IntegrityError
>
> RETRY_ATTEMPTS = 3
>
> def retry_transaction(function):
> def wrapper(*args, **kwargs):
> attempt = 0
> while True:
> attempt += 1
> try:
> return function(*args, **kwargs)
> except (DisconnectionError, IntegrityError,
> TransactionRollbackError), exc:
> if attempt >= RETRY_ATTEMPTS:
> raise # tried too many times
> return mergeFunctionMetadata(function, wrapper)
>
> Wrap that outside the write_transaction decorator, and it will retry
> the transaction in the common cases where you'd want that. If you're
> using something other than PostgreSQL, you'd need to work out what
> exception is raised on transaction serialisation errors instead of
> TransactionRollbackError.
>
> James.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lists.ubuntu.com/archives/storm/attachments/20090420/0b89dc90/attachment.htm
More information about the storm
mailing list