mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-12 14:00:17 +02:00
Merge pull request #276 from Adarnof/parallel
Parallelize corp and alliance model updates
This commit is contained in:
commit
f7d27c4794
@ -2,7 +2,7 @@ from django.conf import settings
|
|||||||
from celery.task import periodic_task
|
from celery.task import periodic_task
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.contrib.auth.models import Group
|
from django.contrib.auth.models import Group
|
||||||
|
from celery import task
|
||||||
from models import SyncGroupCache
|
from models import SyncGroupCache
|
||||||
from celery.task.schedules import crontab
|
from celery.task.schedules import crontab
|
||||||
from services.managers.openfire_manager import OpenfireManager
|
from services.managers.openfire_manager import OpenfireManager
|
||||||
@ -522,6 +522,39 @@ def populate_alliance(id, blue=False):
|
|||||||
EveManager.create_corporation_info(corpinfo['id'], corpinfo['name'], corpinfo['ticker'],
|
EveManager.create_corporation_info(corpinfo['id'], corpinfo['name'], corpinfo['ticker'],
|
||||||
corpinfo['members']['current'], blue, alliance)
|
corpinfo['members']['current'], blue, alliance)
|
||||||
|
|
||||||
|
@task
|
||||||
|
def update_alliance(id):
|
||||||
|
alliance = EveAllianceInfo.objects.get(alliance_id=id)
|
||||||
|
corps = EveCorporationInfo.objects.filter(alliance=alliance)
|
||||||
|
logger.debug("Updating alliance %s with %s member corps" % (alliance, len(corps)))
|
||||||
|
allianceinfo = EveApiManager.get_alliance_information(alliance.alliance_id)
|
||||||
|
if allianceinfo:
|
||||||
|
EveManager.update_alliance_info(allianceinfo['id'], allianceinfo['executor_id'],
|
||||||
|
allianceinfo['member_count'], alliance.is_blue)
|
||||||
|
for corp in corps:
|
||||||
|
if corp.corporation_id in allianceinfo['member_corps'] is False:
|
||||||
|
logger.info("Corp %s no longer in alliance %s" % (corp, alliance))
|
||||||
|
corp.alliance = None
|
||||||
|
corp.save()
|
||||||
|
populate_alliance(alliance.alliance_id, blue=alliance.is_blue)
|
||||||
|
elif EveApiManager.check_if_alliance_exists(alliance.alliance_id) is False:
|
||||||
|
logger.info("Alliance %s has closed. Deleting model" % alliance)
|
||||||
|
alliance.delete()
|
||||||
|
|
||||||
|
@task
|
||||||
|
def update_corp(id):
|
||||||
|
corp = EveCorporationInfo.objects.get(corporation_id=id)
|
||||||
|
logger.debug("Updating corp %s" % corp)
|
||||||
|
corpinfo = EveApiManager.get_corporation_information(corp.corporation_id)
|
||||||
|
if corpinfo:
|
||||||
|
alliance = None
|
||||||
|
if EveAllianceInfo.objects.filter(alliance_id=corpinfo['alliance']['id']).exists():
|
||||||
|
alliance = EveAllianceInfo.objects.get(alliance_id=corpinfo['alliance']['id'])
|
||||||
|
EveManager.update_corporation_info(corpinfo['id'], corpinfo['members']['current'], alliance, corp.is_blue)
|
||||||
|
elif EveApiManager.check_if_corp_exists(corp.corporation_id) is False:
|
||||||
|
logger.info("Corp %s has closed. Deleting model" % corp)
|
||||||
|
corp.delete()
|
||||||
|
|
||||||
# Run Every 2 hours
|
# Run Every 2 hours
|
||||||
@periodic_task(run_every=crontab(minute=0, hour="*/2"))
|
@periodic_task(run_every=crontab(minute=0, hour="*/2"))
|
||||||
def run_corp_update():
|
def run_corp_update():
|
||||||
@ -595,33 +628,11 @@ def run_corp_update():
|
|||||||
|
|
||||||
# update existing corp models
|
# update existing corp models
|
||||||
for corp in EveCorporationInfo.objects.all():
|
for corp in EveCorporationInfo.objects.all():
|
||||||
logger.debug("Updating corp %s" % corp)
|
update_corp.delay(corp.corporation_id)
|
||||||
corpinfo = EveApiManager.get_corporation_information(corp.corporation_id)
|
|
||||||
if corpinfo:
|
|
||||||
alliance = None
|
|
||||||
if EveAllianceInfo.objects.filter(alliance_id=corpinfo['alliance']['id']).exists():
|
|
||||||
alliance = EveAllianceInfo.objects.get(alliance_id=corpinfo['alliance']['id'])
|
|
||||||
EveManager.update_corporation_info(corpinfo['id'], corpinfo['members']['current'], alliance, corp.is_blue)
|
|
||||||
elif EveApiManager.check_if_corp_exists(corp.corporation_id) is False:
|
|
||||||
logger.info("Corp %s has closed. Deleting model" % corp)
|
|
||||||
corp.delete()
|
|
||||||
|
|
||||||
# update existing alliance models
|
# update existing alliance models
|
||||||
for alliance in EveAllianceInfo.objects.all():
|
for alliance in EveAllianceInfo.objects.all():
|
||||||
logger.debug("Updating alliance %s" % alliance)
|
update_alliance.delay(alliance.alliance_id)
|
||||||
allianceinfo = EveApiManager.get_alliance_information(alliance.alliance_id)
|
|
||||||
if allianceinfo:
|
|
||||||
EveManager.update_alliance_info(allianceinfo['id'], allianceinfo['executor_id'],
|
|
||||||
allianceinfo['member_count'], alliance.is_blue)
|
|
||||||
for corp in EveCorporationInfo.objects.filter(alliance=alliance):
|
|
||||||
if corp.corporation_id in allianceinfo['member_corps'] is False:
|
|
||||||
logger.info("Corp %s no longer in alliance %s" % (corp, alliance))
|
|
||||||
corp.alliance = None
|
|
||||||
corp.save()
|
|
||||||
populate_alliance(alliance.alliance_id, blue=alliance.is_blue)
|
|
||||||
elif EveApiManager.check_if_alliance_exists(alliance.alliance_id) is False:
|
|
||||||
logger.info("Alliance %s has closed. Deleting model" % alliance)
|
|
||||||
alliance.delete()
|
|
||||||
|
|
||||||
# create standings
|
# create standings
|
||||||
standings = EveApiManager.get_corp_standings()
|
standings = EveApiManager.get_corp_standings()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user