我在数据库中做了一个小队列,用于重新发送某种内容。当我需要获得队列长度的实时统计信息时,我得到了错误的长度(转到数据库并观察行数)
需要解释的代码:型号.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的错误。表被重新创建,一切正常。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐