1

所以我正在开发一个使用 celery 任务队列来发出 HTTP 请求的 django 项目。

在我的芹菜任务代码中,我有:

json.loads('{"content-type": "application/json"}')
print test.headers
json.loads(test.headers)

结果是:

[2012-07-19 17:02:38,536: WARNING/PoolWorker-4] '{"content-type": "application/json"}'
[2012-07-19 17:02:38,569: ERROR/MainProcess] Task core.tasks.test_run[f304bcdd-72b3-4dd5-9abb-927dc29e7f65] raised exception: ValueError('No JSON object could be decoded',)
Traceback (most recent call last):
  File "/usr/local/bin/lib/python2.7/site-packages/celery/task/trace.py", line 212, in trace_task
    R = retval = fun(*args, **kwargs)     
  File "/opt/ironman_deploy/Ironman/core/tasks.py", line 18, in test_run
    json.loads(test.headers)
  File "/usr/local/bin/lib/python2.7/json/__init__.py", line 326, in loads
    return _default_decoder.decode(s)
  File "/usr/local/bin/lib/python2.7/json/decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/local/bin/lib/python2.7/json/decoder.py", line 384, in raw_decode
    raise ValueError("No JSON object could be decoded")
No JSON object could be decoded: No JSON object could be decoded

我真的不知道发生了什么......显然json可以解码字符串,因为它不会失败上面的2行,但是当我通过引用传递字符串时,它似乎会窒息。

任何人都可以为我阐明这一点吗?

4

2 回答 2

1

test.headers 可能是一个字典。如果你打印它,它会输出一些看起来像 JSON 的东西,但 test.headers 可能根本不是 JSON,解码它会导致 JSON 阻塞。

于 2012-07-19T21:39:06.913 回答
0

Whats is "test.headers" 你的代码段没有说明这一点。如果 test.headers 被分配给第一个 json.loads 调用的结果,那么第二个显然会失败,因为您没有提供字符串。第二个调用应该是 json.dumps(test.headers)

于 2012-07-19T21:35:16.963 回答