These forums have been archived and are now read-only.

The new forums are live and can be found at https://forums.eveonline.com/

EVE Technology Lab

 
  • Topic is locked indefinitely.
 

Efficiency considerations for ESI

Author
Arxan
Strategic Exploration and Development Corp
Silent Company
#1 - 2017-01-30 16:28:47 UTC
I'm building yet-another EVE transaction analyzer and am trying to figure out the "best" way to pull data using the ESI.

I need to be able to look up a type_id (e.g., 35) to get the type_name (e.g., "Pyerite") and the group_name (e.g., "Mineral"). I'm currently doing that using two calls to the ESI API for each type_id:

  1. /universe/types/{type_id} to get the type name and group_id, then
  2. /universe/groups/{group_id} to get the group name.

I am caching the information, so not making redundant calls, but this still seems like a lot of round trips. And, I don't really know how long the cache is valid (does this information ever change, e.g., with new releases?).

I see I can get all the valid type_ids and group_ids in bulk (a "page" at a time), but then I still have to look them up one at a time to get the names. And there are a lot more valid type_ids and group_ids than appear among my transactions, so I would be pulling a lot of unnecessary data this way.

Is there a recommended way to get this information via the ESI?


Althalus Stenory
Flying Blacksmiths
#2 - 2017-01-31 08:40:15 UTC
Well, i'd say types and groups won't change between releases, so you "almost" can consider it has a real cache of a few weeks.

Besides, why don't you simply use the SDE to get these static data ( https://www.fuzzwork.co.uk/dump/ ) ? Even if you are doing a webapp or desktop app, you can either use sqlite or mysql export (even yaml export from ccp that holds every data).
This would save you to do at most 10-11k requests (since there are around such number of items on the market).

If you still want to use ESI for this, I don't think there's a better way to get these data, and you can either cache it until the date in the "Expires" header, or cache it longer if you feel like you don't need "short" caching time.

EsiPy - Python 2.7 / 3.3+ Swagger Client based on pyswagger for ESI

Arxan
Strategic Exploration and Development Corp
Silent Company
#3 - 2017-01-31 13:44:43 UTC
Thanks--I appreciate the reply. I'll stick with getting these through the ESI for now, but will move to the SDE if it becomes a problem.