在使用Django和Pusher时出现“object of type 'NoneType' has no len()”错误

3

我在我的Django应用程序中实现了一个非常基本的、按照教程进行的Pusher触发器。一开始它很好用,但是在提交了几次之后,我遇到了以下异常:

"object of type 'NoneType' has no len()"

在下面第二行中:

p = pusher.Pusher()
p[page_key].trigger('page_update', {'msgid' : message.id})

不同或空字典产生相同的结果,就像将page_key更改为字符串而不是Unicode一样 - 什么也没有。请注意,p和p.trigger的类型()给出了逻辑结果,它们绝对不是None。
这行代码在某些情况下有效(我不知道它们有什么特别之处),并且过去已经起作用,但我无法弄清楚自己错在哪里。
似乎最后几个提交都与Pusher无关,所以我很无助。在网上搜索此异常毫无成果,总体来说,关于django + Pusher的文档不足。
可能是我做错了其他事情,但我不知道从哪里开始查找。
非常感谢任何帮助。
Traceback:

  79.         p[page_key].trigger('page_update', {'msgid' : message.id})
File "/usr/local/lib/python2.7/dist-packages/pusher/__init__.py" in trigger
  41.         status = self.send_request(self.signed_query(event, json_data, socket_id), json_data)
File "/usr/local/lib/python2.7/dist-packages/pusher/__init__.py" in signed_query
  54.         signature = hmac.new(self.pusher.secret, string_to_sign, hashlib.sha256).hexdigest()
File "/usr/lib/python2.7/hmac.py" in new
  133.     return HMAC(key, msg, digestmod)
File "/usr/lib/python2.7/hmac.py" in __init__
  68.         if len(key) > blocksize:

Exception Type: TypeError at /sphere/comment
Exception Value: object of type 'NoneType' has no len()

4
请发布回溯信息,这样我们就能看到错误发生的位置,而不仅仅是触发它的代码行。 - agf
在Django设置文件的顶部添加DEBUG = True,让错误传播,否则执行except WhateverException, e: print e, sys.exc_info()[2] - agf
默认情况下,我的settings.py中设置了DEBUG = True。至于您的第二个建议,它会产生以下结果:类型为“NoneType”的对象没有len() <traceback object at 0xa00cfa4>。###我该如何打印错误本身而不是它的对象? - user1245977
如果您处于调试模式下,当出现异常时,应该会得到一个包含错误描述、每个堆栈帧的本地变量等信息的庞大页面,并且完整的回溯信息应该在服务器日志中。 - agf
抱歉,这是追踪异常的信息。 - user1245977
1个回答

2

self.pusher.secret 是 None,而不是字符串。你的 pusher 设置是否没有被获取到?


我有一个 set_pusher() 函数,在某些情况下没有被调用。谢谢。 - user1245977
1
在 Flask 中做同样的事情。隐藏的环境变量没有被加载。你的答案给了我一个线索,我已经能够使用 python-dotenv 包来修复它。 - Gitau Harrison

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接