2014-04-08 2 views
1

Python 및 JSON에 문제가 있습니다.Redis를 통한 Python 및 JSON이 작동하지 않는 것 같습니다.

1) JSON을 통해 Redis에 사전을 보냅니다.

#This is a dictionary 
args = {"last_observed_date": "2014-04-08T02:05:00", "tau": 2, "interval": 5, "backcast": 5, "series": "exr:EUR_USD:2014-04-08T02:05:00", "K": 5, "is_difference": false, "M": 3, "is_log": false, "last_time": null, "pair": "EUR_USD", "granularity": "minute", "series_name": "closeBid", "method": [{"ols": {"alpha": 0.5}}]} 

생산자 서버 : 나는 소비자에서 생산자와 부하에 DICT를 덤프 JSON을 사용

args = json.dumps(args) 
r.lpush(model_queue,args) 

소비자 서버 :

args = r.brpop(model_queue,0)[1] 
args = json.loads(args) 

Traceback (most recent call last): 
    File "/home/ubuntu/workspace/forex-trading/chaos/chaos_worker.py", line 38, in <module> 
    data = json.loads(data) 
    File "/usr/lib/python2.7/json/__init__.py", line 326, in loads 
    return _default_decoder.decode(s) 
    File "/usr/lib/python2.7/json/decoder.py", line 366, in decode 
    obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
TypeError: expected string or buffer 

내 질문은 왜, 내가 덤프 때 사전을 문자열로 사용하면 Redis에서 검색 할 때 디코딩 할 수 없습니까?

흐름 : 사전 - 문자열 -> redis -> 문자열을 사전으로. 나는 생산자에게 덤핑하고 소비자에게 짐을 싣는다.

+0

당신은 질문을 잊어 버렸습니다. – Adam

+1

''json.loads'에 어떤 타입을 전달합니까? – mgilson

+0

사전. 해시 – Tampa

답변

0

json.loads에 사전을 전달할 수 없으면 json 문자열을 전달해야합니다. 시도 :

args = json.loads(json.dumps(args)) 
+0

나는 해시를 생산자에게 덤핑하고 소비자에게 로딩하고있다. – Tampa

+0

args = r.brpop (model_queue, 0) [1]에서 args가 무엇인지 알 수 있습니다. 당신은 타입 (args) 또는 유사한 것을 할 수 있고 알아낼 수 있습니까? –

관련 문제