From b317f0899b5453b2511db5faa65f6d80cd7be5eb Mon Sep 17 00:00:00 2001 From: Tim Abbott Date: Thu, 1 Aug 2013 14:36:42 -0400 Subject: [PATCH] Add a management command to render all old messages. I'd like to minimize the probability that we'll actually run the code in the "messages not rendered yet in database" codepath since it might perform poorly, and it seems like the best way to do that is to just run a loop that renders them all. (imported from commit 247cb85fffa6cbc95958b9feda97462792a542c2) --- .../commands/render_old_messages.py | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 zephyr/management/commands/render_old_messages.py diff --git a/zephyr/management/commands/render_old_messages.py b/zephyr/management/commands/render_old_messages.py new file mode 100644 index 0000000000..489f81934e --- /dev/null +++ b/zephyr/management/commands/render_old_messages.py @@ -0,0 +1,26 @@ +from __future__ import absolute_import + +from django.core.management.base import BaseCommand + +from zephyr.lib.actions import update_message_flags +from zephyr.models import UserProfile, Message, get_user_profile_by_email +import datetime +import time + +class Command(BaseCommand): + help = """Render all historical messages that haven't been rendered yet. + +Usage: python manage.py render_old_messages""" + + def handle(self, *args, **options): + total_rendered = 0 + while True: + messages = Message.objects.filter(rendered_content_version=None)[0:100] + if len(messages) == 0: + break + for message in messages: + message.maybe_render_content(save=True) + total_rendered += len(messages) + print datetime.datetime.now(), total_rendered + # Put in some sleep so this can run safely on low resource machines + time.sleep(0.25)