Skip to main content
 首页 » 编程设计

python之"object of type ' NoneType ' has no len()"将推送器与 Django 一起使用时

2025年05月04日23cyq1162

我在我的 Django 应用程序中实现了一个非常基本的教程 Pusher 触发器。 起初它运行良好,但在几次提交后我遇到了以下异常:

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

在以下第二行中:

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

不同的或空的 dict 产生相同的结果,与将 page_key 更改为字符串而不是 unicode 相同 - 没有。 另请注意,p 和 p.trigger 的 type() 给出了合乎逻辑的结果,而且它们绝对不是 None。

这条线在某些情况下有效(我不知道它们有什么特别之处)并且正如我提到的那样在过去有效,但我无法弄清楚我做错了什么。

看来最后的commit都和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() 

请您参考如下方法:

self.pusher.secret 是 None 而不是字符串。您的推送器设置是否未被接收?