From 0a142d873c96a7458489ab20afd5d00c36d4391e Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Mon, 8 Nov 2010 15:06:16 +0000 Subject: [PATCH] Convert validation processing to a celery task --- cronjobs.txt | 1 - reddit/cron.py | 44 -------------------------------------------- reddit/tasks.py | 16 ++++++++++++++++ settings.py | 11 +++++++++-- 4 files changed, 25 insertions(+), 47 deletions(-) diff --git a/cronjobs.txt b/cronjobs.txt index 33dd32b..55458e5 100644 --- a/cronjobs.txt +++ b/cronjobs.txt @@ -1,7 +1,6 @@ ROOT=/home/matalok/auth/auth @daily $ROOT/run-cron.py reddit.cron UpdateAPIs > $ROOT/logs/redditapi-update.log 2>&1 -*/10 * * * * $ROOT/run-cron.py reddit.cron ProcessValidations > $ROOT/logs/reddit-validations.log 2>&1 */5 * * * * $ROOT/run-cron.py eve_api.cron UpdateAPIs > $ROOT/logs/eveapi-update.log 2>&1 0 */6 * * * $ROOT/run-cron.py eve_api.cron AllianceUpdate > $ROOT/logs/alliance-update.log 2>&1 @daily $ROOT/run-cron.py eve_proxy.cron ClearStaleCache > $ROOT/logs/cache-clear.log 2>&1 diff --git a/reddit/cron.py b/reddit/cron.py index f80e5c5..18431b1 100644 --- a/reddit/cron.py +++ b/reddit/cron.py @@ -33,47 +33,3 @@ class UpdateAPIs(): else: acc.save() time.sleep(.5) - - -class APIKeyParser: - dictitems = {} - - def __init__(self, key): - rows = key.split('\n') - for row in rows: - key = row.split(":")[0].replace(" ", "_").lower().strip() - value = row.split(":")[1].strip() - - self.dictitems[key] = value - - def __getattr__(self, key): - return self.dictitems[key] - - def __str__(self): - return "%s:%s" % (self.user_id, self.api_key) - -class ProcessValidations(): - """ - Grabs all Reddit Mail and processes validations - """ - - @property - def _logger(self): - if not hasattr(self, '__logger'): - self.__logger = logging.getLogger(__name__) - return self.__logger - - def job(self, args): - inbox = Inbox(settings.REDDIT_USER, settings.REDDIT_PASSWORD) - - for msg in inbox: - if not msg.was_comment: - try: - acc = RedditAccount.objects.get(username__iexact=msg.author) - if not acc.validated and msg.subject == "Validation: %s" % acc.user.username: - self._logger.info("Validated %s" % acc.user.username) - acc.validated = True - acc.save() - except RedditAccount.DoesNotExist: - continue - diff --git a/reddit/tasks.py b/reddit/tasks.py index 83faee2..2b7645e 100644 --- a/reddit/tasks.py +++ b/reddit/tasks.py @@ -1,4 +1,5 @@ from celery.decorators import task +from reddit.models import RedditAccount from reddit.api import Inbox import settings @@ -7,3 +8,18 @@ def send_reddit_message(to, subject, message): ib = Inbox(username=settings.REDDIT_USER, password=settings.REDDIT_PASSWORD) ib.send(to, subject, message) +@task(ignore_result=True) +def process_validations(): + log = process_validations.get_logger() + inbox = Inbox(settings.REDDIT_USER, settings.REDDIT_PASSWORD) + for msg in inbox: + if not msg.was_comment: + try: + acc = RedditAccount.objects.get(username__iexact=msg.author) + if not acc.validated and msg.subject == "Validation: %s" % acc.user.username: + log.info("Validated %s" % acc.user.username) + acc.validated = True + acc.save() + except RedditAccount.DoesNotExist: + continue + diff --git a/settings.py b/settings.py index e3d37f2..72e0f81 100755 --- a/settings.py +++ b/settings.py @@ -156,6 +156,13 @@ try: except: pass - - djcelery.setup_loader() + +### Celery Schedule + +CELERYBEAT_SCHEDULE = { + "reddit-validations": { + "task": "reddit.tasks.process_validations", + "schedule": timedelta(minutes=10), + }, +}