Created
January 1, 2016 20:59
-
-
Save fuzzysteve/03f00f46c50a881ffdb4 to your computer and use it in GitHub Desktop.
basic emdr reader
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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