Streaming API ============= Redshelf operates a streaming API which provides updates from our dynamic pricing system. Please contact support if you're interested in using a push stream. Subscribe Method ---------------- To use the response body subscription method make a streaming request to the following URL: `http://pubsub.redshelf.com:9080/sub/pricing/` Long Polling Method ------------------- To use the HTTP long polling method make a streaming request to the following URL: `http://pubsub.redshelf.com:9080/lp/pricing/` JSONP Method ------------ To use the JSONP method make a streaming request to the following URL: `http://pubsub.redshelf.com:9080/jsonp/pricing/` Websockets Method ----------------- To use the websockets method make a streaming request to the following URL: `http://pubsub.redshelf.com:9080/ws/pricing/` Example Message --------------- Example pricing message:: { "id":6, "channel":"pricing", "data":{ "book": "ccc5a093f5ee30ec749e4909840f0f7b794066bb", "isbn": "123456789012", "id": 123, "new_price": 6.42, "limit_days": 180 }, "tag":"1", "time":"Thu, 05 Jun 2014 20:39:31 GMT", } Example Long Polling Script --------------------------- This script provides a basic example of making long polling requests via requests. It may not be ideal for production systems:: import simplejson import requests s = requests.Session() def streaming(): headers = {'connection': 'keep-alive', 'content-type': 'application/json', 'transfer-encoding': 'chunked'} req = requests.Request("GET", 'http://pubsub.redshelf.com:9080/lp/pricing/', headers=headers).prepare() resp = s.send(req, stream=True) for line in resp.iter_lines(): if line: yield line def read_stream(): for line in streaming(): print line while 1: try: print simplejson.loads(read_stream()) except TypeError: continue