mirror of
https://github.com/nikdoof/test-auth.git
synced 2025-12-14 23:02:19 +00:00
Migrated the final cronjobs over to tasks
This commit is contained in:
@@ -1,6 +0,0 @@
|
|||||||
ROOT=/home/matalok/auth/auth
|
|
||||||
|
|
||||||
@daily $ROOT/run-cron.py reddit.cron UpdateAPIs > $ROOT/logs/redditapi-update.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
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
import logging
|
|
||||||
import datetime
|
|
||||||
|
|
||||||
from eve_api.models.api_player import EVEAccount, EVEPlayerCorporation, EVEPlayerCharacter
|
|
||||||
import eve_api.api_puller.accounts
|
|
||||||
from eve_api.api_puller.alliances import __start_full_import as alliance_import
|
|
||||||
from eve_api.api_puller.corp_management import pull_corp_members
|
|
||||||
from eve_api.api_exceptions import APIAuthException, APINoUserIDException
|
|
||||||
from eve_api.app_defines import *
|
|
||||||
|
|
||||||
from eve_api.tasks import *
|
|
||||||
|
|
||||||
class AllianceUpdate():
|
|
||||||
"""
|
|
||||||
Pulls the AllianceList.xml.aspx and updates the alliance objects
|
|
||||||
"""
|
|
||||||
|
|
||||||
@property
|
|
||||||
def _logger(self):
|
|
||||||
if not hasattr(self, '__logger'):
|
|
||||||
self.__logger = logging.getLogger(__name__)
|
|
||||||
return self.__logger
|
|
||||||
|
|
||||||
def job(self, args):
|
|
||||||
alliance_import()
|
|
||||||
@@ -60,6 +60,12 @@ def import_apikey(api_userid, api_key, user=None, force_cache=False):
|
|||||||
return acc
|
return acc
|
||||||
|
|
||||||
|
|
||||||
|
@task(ignore_result=True, rate_limit='10/d')
|
||||||
|
def import_alliance_details():
|
||||||
|
from eve_api.api_puller.alliances import __start_full_import as alliance_import
|
||||||
|
alliance_import()
|
||||||
|
|
||||||
|
|
||||||
@task(ignore_result=True, rate_limit='5/m')
|
@task(ignore_result=True, rate_limit='5/m')
|
||||||
def import_corp_members(api_userid, api_key, character_id):
|
def import_corp_members(api_userid, api_key, character_id):
|
||||||
pull_corp_members(api_key, api_userid, character_id)
|
pull_corp_members(api_key, api_userid, character_id)
|
||||||
|
|||||||
@@ -1,37 +0,0 @@
|
|||||||
import logging
|
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
from eve_proxy.models import CachedDocument
|
|
||||||
|
|
||||||
class ClearStaleCache():
|
|
||||||
"""
|
|
||||||
Clears out any stale cache entries
|
|
||||||
"""
|
|
||||||
|
|
||||||
@property
|
|
||||||
def _logger(self):
|
|
||||||
if not hasattr(self, '__logger'):
|
|
||||||
self.__logger = logging.getLogger(__name__)
|
|
||||||
return self.__logger
|
|
||||||
|
|
||||||
def job(self, args):
|
|
||||||
objs = CachedDocument.objects.filter(cached_until__lt=datetime.utcnow())
|
|
||||||
self._logger.info('Removing %s stale cache documents' % objs.count())
|
|
||||||
objs.delete()
|
|
||||||
|
|
||||||
class FlushCache():
|
|
||||||
"""
|
|
||||||
Flushes the entire cache
|
|
||||||
"""
|
|
||||||
|
|
||||||
@property
|
|
||||||
def _logger(self):
|
|
||||||
if not hasattr(self, '__logger'):
|
|
||||||
self.__logger = logging.getLogger(__name__)
|
|
||||||
return self.__logger
|
|
||||||
|
|
||||||
def job(self, args):
|
|
||||||
objs = CachedDocument.objects.all()
|
|
||||||
self._logger.info('Removing %s stale cache documents' % objs.count())
|
|
||||||
objs.delete()
|
|
||||||
|
|
||||||
12
eve_proxy/tasks.py
Normal file
12
eve_proxy/tasks.py
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
import logging
|
||||||
|
from datetime import datetime, timedelta
|
||||||
|
from celery.decorators import task
|
||||||
|
from eve_proxy.models import CachedDocument
|
||||||
|
|
||||||
|
@task(ignore_result=True)
|
||||||
|
def clear_stale_cache(cache_extension=0):
|
||||||
|
log = clear_stale_cache.get_logger()
|
||||||
|
|
||||||
|
time = datetime.utcnow() - timedelta(seconds=cache_extension)
|
||||||
|
objs = CachedDocument.objects.filter(cached_until__lt=datetime.utcnow()).delete()
|
||||||
|
self.log.info('Removed %s stale cache documents' % objs.count())
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
import time
|
|
||||||
import datetime
|
|
||||||
import logging
|
|
||||||
import settings
|
|
||||||
|
|
||||||
from reddit.models import RedditAccount
|
|
||||||
from reddit.api import Inbox
|
|
||||||
|
|
||||||
class UpdateAPIs():
|
|
||||||
"""
|
|
||||||
Updates all Reddit API elements in the database
|
|
||||||
"""
|
|
||||||
@property
|
|
||||||
def _logger(self):
|
|
||||||
if not hasattr(self, '__logger'):
|
|
||||||
self.__logger = logging.getLogger(__name__)
|
|
||||||
return self.__logger
|
|
||||||
|
|
||||||
last_update_delay = 604800
|
|
||||||
|
|
||||||
def job(self, args):
|
|
||||||
delta = datetime.timedelta(seconds=self.last_update_delay)
|
|
||||||
|
|
||||||
self._logger.debug("Updating accounts older than %s" % (datetime.datetime.now() - delta))
|
|
||||||
|
|
||||||
for acc in RedditAccount.objects.filter(last_update__lt=(datetime.datetime.now() - delta)):
|
|
||||||
self._logger.info("Updating %s" % acc.username)
|
|
||||||
|
|
||||||
try:
|
|
||||||
acc.api_update()
|
|
||||||
except RedditAccount.DoesNotExist:
|
|
||||||
acc.delete()
|
|
||||||
else:
|
|
||||||
acc.save()
|
|
||||||
time.sleep(.5)
|
|
||||||
42
run-cron.py
42
run-cron.py
@@ -1,42 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
"""Executes a Django cronjob"""
|
|
||||||
|
|
||||||
import os
|
|
||||||
|
|
||||||
# Activate the virtualenv
|
|
||||||
path = os.path.dirname(os.path.realpath( __file__ ))
|
|
||||||
os.chdir(path)
|
|
||||||
activate_this = os.path.join(path, 'env/bin/activate_this.py')
|
|
||||||
execfile(activate_this, dict(__file__=activate_this))
|
|
||||||
|
|
||||||
import sys
|
|
||||||
import logging
|
|
||||||
from django.core.management import setup_environ
|
|
||||||
import settings
|
|
||||||
|
|
||||||
setup_environ(settings)
|
|
||||||
|
|
||||||
logging.basicConfig(level=logging.INFO)
|
|
||||||
log = logging.getLogger('runcron')
|
|
||||||
|
|
||||||
try:
|
|
||||||
mod = __import__(sys.argv[1])
|
|
||||||
except ImportError:
|
|
||||||
raise Exception('Error creating service')
|
|
||||||
|
|
||||||
for i in sys.argv[1].split(".")[1:]:
|
|
||||||
mod = getattr(mod, i)
|
|
||||||
cron_class = getattr(mod, sys.argv[2])()
|
|
||||||
|
|
||||||
log.info("Starting Job %s in %s" % (sys.argv[2], sys.argv[1]))
|
|
||||||
|
|
||||||
try:
|
|
||||||
if len(sys.argv) >= 3:
|
|
||||||
args = sys.argv[3:]
|
|
||||||
else:
|
|
||||||
args = []
|
|
||||||
cron_class.job(args)
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
log.error("aborting.")
|
|
||||||
|
|
||||||
log.info("Job complete")
|
|
||||||
@@ -168,7 +168,10 @@ CELERYBEAT_SCHEDULE = {
|
|||||||
"task": "eve_api.tasks.queue_apikey_updates",
|
"task": "eve_api.tasks.queue_apikey_updates",
|
||||||
"schedule": timedelta(minutes=10),
|
"schedule": timedelta(minutes=10),
|
||||||
},
|
},
|
||||||
|
"alliance-update": {
|
||||||
|
"task": "import_alliance_details",
|
||||||
|
"schedule": timedelta(hours=6),
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
CELERY_SEND_TASK_ERROR_EMAILS = True
|
CELERY_SEND_TASK_ERROR_EMAILS = True
|
||||||
|
|||||||
Reference in New Issue
Block a user