PythonDjangomodelname.objects.all所有().count()不返回实际大小

2024-10-04 03:19:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我在数据库中做了一个小队列,用于重新发送某种内容。当我需要获得队列长度的实时统计信息时,我得到了错误的长度(转到数据库并观察行数)

需要解释的代码:型号.py你知道吗

class SentSMS( models.Model ):
     phone = models.ForeignKey( 'Subscriber', verbose_name=u'Абонент' )
     text = models.CharField( max_length=160, verbose_name=u'Сообщение' )
     free = models.BooleanField( default=False, verbose_name=u'Бесплатная смс' )
     sent_date = models.DateTimeField( default=datetime.datetime.now, verbose_name=u'Дата отправки' )
     price = models.FloatField( verbose_name=u'Стоимость СМС' )
     subscription = models.ForeignKey( 'Subscription', verbose_name=u'Подписка', blank=True, null=True )
     priority = models.IntegerField( verbose_name=u'Приоритет', default=0 )

有一个作业,它将消息放入队列,或获取一些数据。所以,队列长度总是变化的。你知道吗

当一个用户尝试这样做时(在一个会话中)SentSMS.objects.all().count(),它总是显示相同的长度。但是,当我重新启动python时,我会看到更新的长度,就目前而言,python启动时,在这个会话中,从启动应用程序开始,队列长度是相同的。你知道吗

我错过了什么条件?或者这是django1.6的bug?你知道吗

-----UPD1-----:

logger.log( "Send from stock2 to stock1" )
for sms in SentSMS.objects.filter( sent_date__lte=datetime.datetime.now()-datetime.timedelta(hours=2) ):
    try:
        logger.log( u"Transmitting sms: " + unicode( sms.phone ) + " with text \"" + unicode( sms.text ) + "\" and date " + unicode( datetime.datetime.now() ) )
        new_sms = SendSMS( phone = sms.phone, text = sms.text, free = sms.free, send_date = datetime.datetime.now(), price = sms.price, subscription = sms.subscription, priority = sms.priority )
        new_sms.save()
        sms.delete()
    except:
        logger.log( "Error with transmitting sms", level=Logger.WARNING )
        logger.print_exception()
logger.log( "Sleep one hour" )
time.sleep(3600*2)

----升级2----- 解决了的。这是mysql的错误。表被重新创建,一切正常。你知道吗


Tags: textnamelogfreedefaultverbosedatetimedate