Replace django-celery with base Celery (#791)

Update celery tasks to new style & remove djcelery
Vanilla celery + django-celery-beat take over the role of djcelery. Task schedules are consolidated into settings instead of residing in code.
Update docs and example supervisor configs.
This commit is contained in:
Basraah
2017-05-04 06:53:16 +10:00
committed by Adarnof
parent 372e582c6e
commit 17dd7c04c7
13 changed files with 51 additions and 48 deletions

View File

@@ -1,10 +1,8 @@
from __future__ import unicode_literals
from django.conf import settings
from celery.task import periodic_task
from django.contrib.auth.models import User
from notifications import notify
from celery import task
from celery.task.schedules import crontab
from authentication.models import AuthServicesInfo
from eveonline.managers import EveManager
from eveonline.models import EveApiKeyPair
@@ -17,10 +15,12 @@ from authentication.tasks import set_state
import logging
import evelink
from alliance_auth.celeryapp import app
logger = logging.getLogger(__name__)
@task
@app.task
def refresh_api(api):
logger.debug('Running update on api key %s' % api.api_id)
still_valid = True
@@ -70,12 +70,12 @@ def refresh_api(api):
level="danger")
@task
@app.task
def refresh_user_apis(user):
logger.debug('Refreshing all APIs belonging to user %s' % user)
apis = EveApiKeyPair.objects.filter(user=user)
for x in apis:
refresh_api(x)
refresh_api.apply(args=(x,))
# Check our main character
auth = AuthServicesInfo.objects.get(user=user)
if auth.main_char_id:
@@ -91,7 +91,7 @@ def refresh_user_apis(user):
set_state(user)
@periodic_task(run_every=crontab(minute=0, hour="*/3"))
@app.task
def run_api_refresh():
if not EveApiManager.check_if_api_server_online():
logger.warn("Aborted scheduled API key refresh: API server unreachable")
@@ -101,18 +101,18 @@ def run_api_refresh():
refresh_user_apis.delay(u)
@task
@app.task
def update_corp(id, is_blue=None):
EveManager.update_corporation(id, is_blue=is_blue)
@task
@app.task
def update_alliance(id, is_blue=None):
EveManager.update_alliance(id, is_blue=is_blue)
EveManager.populate_alliance(id)
@periodic_task(run_every=crontab(minute=0, hour="*/2"))
@app.task
def run_corp_update():
if not EveApiManager.check_if_api_server_online():
logger.warn("Aborted updating corp and alliance models: API server unreachable")
@@ -123,7 +123,7 @@ def run_corp_update():
is_blue = True if corp_id in settings.STR_BLUE_CORP_IDS else False
try:
if EveCorporationInfo.objects.filter(corporation_id=corp_id).exists():
update_corp(corp_id, is_blue=is_blue)
update_corp.apply(args=(corp_id,), kwargs={'is_blue': is_blue})
else:
EveManager.create_corporation(corp_id, is_blue=is_blue)
except ObjectNotFound:

View File

@@ -164,7 +164,7 @@ def user_refresh_api(request, api_id):
if EveApiKeyPair.objects.filter(api_id=api_id).exists():
api_key_pair = EveApiKeyPair.objects.get(api_id=api_id)
if api_key_pair.user == request.user:
refresh_api(api_key_pair)
refresh_api.apply(args=(api_key_pair,))
messages.success(request, _('Refreshed API key %(apiid)s') % {"apiid": api_id})
set_state(request.user)
else: