Skip to main content

Task queue framework for building tools that interact with the EVE Online ESI API using Celery, RabbitMQ, and Redis.

Project description

EVECelery

PyPI Documentation Status EVECelery GitHub

EVECelery is a task queue framework for building tools that interact with the EVE Online ESI API using Celery, RabbitMQ, and Redis.

With EVECelery you can easily distribute ESI calls through task queues built on top of Celery across a fleet of worker nodes. You can build on top of EVECelery to create your own custom ESI tools defining your own tasks and scheduled jobs.

Installation

pip install EVECelery

Usage

Starting the Celery worker server

From CLI

Set the following environmental variables and then run EVECelery from the CLI. Variables: BrokerUser, BrokerPassword, BrokerHost, BrokerPort, BrokerVhost, ResultBackendUser, ResultBackendPassword, ResultBackendHost, ResultBackendPort, ResultBackendDb

eve-celery

From your code

From your worker code start the Celery worker server that handles running tasks:

from EVECelery.CeleryApps import CeleryWorker

c = CeleryWorker(broker_user="user", broker_password="pass", broker_host="host", broker_port=5672, broker_vhost="esi",
                 result_user="user", result_password="pass", result_host="host", result_port=6379, result_db=0,
                 header_email="youremail@example.com")

c.start(
    max_concurrency=10)  # Start celery app - equivalent to running "celery worker -l WARNING --autoscale 10,1 -Q queues"

Using EVECelery in your code

From another Python script you can send tasks to the queues and receive results:

from EVECelery.CeleryApps import CeleryWorker
from EVECelery.tasks.Universe import *

c = CeleryWorker(broker_user="user", broker_password="pass", broker_host="host", broker_port=5672, broker_vhost="esi",
                 result_user="user", result_password="pass", result_host="host", result_port=6379, result_db=0,
                 header_email="youremail@example.com")  # only need to call this once in our code to init the tasks
r = SystemInfo().get_sync(timeout=5, system_id=30000142)
print(r)

Current supported endpoints

ESI Route EVECelery Task
/alliances/{alliance_id}/ AllianceInfo()
/characters/{character_id}/ CharacterPublicInfo()
/corporations/{corporation_id}/ CorporationInfo()
/markets/prices/ PricesList()
/universe/categories/{category_id}/ CategoryInfo()
/universe/constellations/{constellation_id}/ ConstellationInfo()
/universe/factions/ FactionsList()
/universe/groups/{group_id}/ GroupInfo()
/universe/regions/{region_id}/ RegionInfo()
/universe/systems/{system_id}/ SystemInfo()
/universe/types/{type_id}/ TypeInfo()

Examples

See the included example scripts under docs/examples

Copyright Notice

See CCP.md

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

EVECelery-0.18.tar.gz (14.1 kB view hashes)

Uploaded Source

Built Distribution

EVECelery-0.18-py3-none-any.whl (22.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page