Skip to content

Instantly share code, notes, and snippets.

@fuzzysteve
Created January 1, 2016 20:59
Show Gist options
  • Save fuzzysteve/03f00f46c50a881ffdb4 to your computer and use it in GitHub Desktop.
Save fuzzysteve/03f00f46c50a881ffdb4 to your computer and use it in GitHub Desktop.
basic emdr reader
#!/usr/bin/env pythonimport zlib
# This can be replaced with the built-in json module, if desired.
import simplejson
import datetime
from datetime import datetime
import gevent
from gevent.pool import Pool
from gevent import monkey; gevent.monkey.patch_all()
import zmq.green as zmq
import zlib
# The maximum number of greenlet workers in the greenlet pool. This is not one
# per processor, a decent machine can support hundreds or thousands of greenlets.
# I recommend setting this to the maximum number of connections your database
# backend can accept, if you must open one connection per save op.
MAX_NUM_POOL_WORKERS = 500
def main():
context = zmq.Context()
subscriber = context.socket(zmq.SUB)
# Connect to the first publicly available relay.
subscriber.connect('tcp://relay-us-central-1.eve-emdr.com:8050')
# Disable filtering.
subscriber.setsockopt(zmq.SUBSCRIBE, "")
# We use a greenlet pool to cap the number of workers at a reasonable level.
greenlet_pool = Pool(size=MAX_NUM_POOL_WORKERS)
print("Consumer daemon started, waiting for jobs...")
print("Worker pool size: %d" % greenlet_pool.size)
while True:
# Since subscriber.recv() blocks when no messages are available,
# this loop stays under control. If something is available and the
# greenlet pool has greenlets available for use, work gets done.
greenlet_pool.spawn(worker, subscriber.recv())
def worker(job_json):
# Receive raw market JSON strings.
market_json = zlib.decompress(job_json)
# Un-serialize the JSON data to a Python dict.
market_data = simplejson.loads(market_json)
#get generic items
name = market_data.get('generator')
name = name['name']
resultType = market_data.get('resultType')
rowsets = market_data.get('rowsets')[0]
#switch on type
if (resultType == 'history'):
pass
if (resultType == 'orders'):
for row in rowsets['rows']:
price = row[0]
volRemaining = row[1]
range = row[2]
orderID = row[3]
volEntered = row[4]
minVolume = row[5]
bid = 0
if(row[6] == 'True'):
bid = 1
duration = row[8]
stationID = row[9]
solarSystemID = row[10]
regionID = rowsets['regionID']
typeID = rowsets['typeID']
dateAdded = datetime.now()
print typeID,price
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment