> > I have several CGI and cron scripts and that I would like coordinate
> > via a "First In / First Out" style buffer.    That is, some processes
> > are adding work units, and some take the oldest and start work on
> > them.
>
> > Since I need the queue to both survive system crashes and provide an
> > audit record of all work-units in/out, people have suggested using an
> > ACID compliant databse for the task. (SQLite or MySQL depending on
> > volume).
>
> > Can SQLAlchemy be used for the task?
>
> > Any help would be appreciated, as I a new to SQL and SQLAlchemy.
>
> Sounds reasonable and fairly simple to do.
>
> I think you would need two tables.
> One for the tasks to be done an another for tasks completed (the
> history you wanted)
>
> It sounds like you would need the following functionality
> * Insert record - Adding records to the que
> * Qurey record - Finding the record that needs doing.
> * Deleting record - Remove the task from the current_tasks table when
> the task is complete.
>
> I'd use the current date+time as a key for the current_tasks table so
> you can query and return the first (session.query....first(), not all
> ()) record with the lowest date (as you may occasionally have more
> than one entry with the exact same date)
>
> SQLAlchemy is defiantly capable of doing all of these things and
> provides awesome ORM functionality so you don't have to construct any
> SQL - Look at declarative base
> rough example here 
> :http://www.sqlalchemy.org/docs/05/ormtutorial.html#creating-table-cla...
> more details here 
> :http://www.sqlalchemy.org/docs/05/reference/ext/declarative.html
>
> Good luck.
>


OK...  I am going to try implement something like this using SQA &
sqlite

(Has anyone done this FIFO buffer / message channel system in SQL
Alchemy before?  I hate to re-invent the wheel.)

The first problem will am grappling with is a way to atomically
retrive an item from the queue.

After some asking around on the sqlite mailing list:
http://www.nabble.com/forum/ViewPost.jtp?post=23590920&framed=y

It seems the solution is to use a "BEGIN EXCLUSIVE TRANSACTION; " to
warp the parts of the code that do the FIFO stuff.

How would I do this in SQLAlchemy?  (With out affecting the rest of my
code that uses the regular session/transaction system.)

Thank you
:)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to