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