On Sep 6, 8:38 am, kmpm <pe...@birchroad.net> wrote:
> On Sep 6, 9:02 am, Mike Dewhirst <mi...@dewhirst.com.au> wrote:
>
>
>
>
>
> > On 6/09/2010 4:19pm, kmpm wrote:
>
> > > I have a project running in a manufacturing industry that is actually
> > > built upon django.
> > > In this I need to generate a unique serial, batch or lot number
> > > (depending on what you would like to call it) that is a running number
> > > from 0 to whathever for each and every day.
>
> > So when every day ticks over at midnight, the serial number starts at
> > zero again? Does production continue across the time 00:00? Why don't
> > you use a continuously increment number?
>
> > I don't know what the "right" thing to do is. I'm sure there will be a
> > classic solution. I think I would be writing a singleton function
> > nextnum() which returns the next number as required and then
>
> >     lot_no = models.IntegerField(default=nextnum)
>
> > I'm not sure what would happen threadwise but a singleton would be a
> > natural place to deal with thread-locking and restarting the sequence
> > when the clock ticks over.
>
> > lot_no then gets the value prior to the save()
>
> > Mike
>
> Yes it ticks over at midnight, and no there is no production at that
> time. More or less office hours only.
> A singleton would be nice but as you said it's not thread safe and
> won't scale nicely if we were to use multiple frontend servers or
> anything like that.
> There is a project called django-idmapper[1] that I just found that
> might solve it by using a model that seems to be stored in shared
> memory.
> If running on multiple frontends that would need to be something like
> memcached but I don't know about thread safety and concurrency there
> either.
>
> [1]http://github.com/dcramer/django-idmapper

You should probably rely on your database to generate a unique
incrementing ID. If you're on Postgres, you can use a sequence, and
for MySQL there's some code emulating sequences here:
http://dev.mysql.com/doc/refman/5.1/en/information-functions.html#function_last-insert-id
(it's towards the end of the section on last_insert_id()).
--
DR.

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to