Pubnub总是在Django应用程序中超时

时间:2017-04-26 02:39:55

标签: python django heroku pubnub

我正在构建一个Django应用程序来收听Pubnub提要并将消息存储在数据库中。我在我的应用apps.py的{​​{1}} AppConfig方法中创建了一个pubnub监听器。

在Heroku上启动我的应用程序后,我收到了无用的错误

ready()

我怀疑django想要清理AppConfig进程并且感到不安的是那里有一个pubnub对象。那是问题吗?我该如何解决?

我也看到了(至少含蓄地通过例子)Heroku recommends using the twisted interface.我不是很糟糕吗?

以下是相关代码:

我根据Pubnub's hello world example创建了一个mypubnub.py:

2017-04-26T02:17:50.038060+00:00 heroku[web.1]: Error R12 (Exit timeout) -> At least one process failed to exit within 30 seconds of SIGTERM
2017-04-26T02:17:50.038060+00:00 heroku[web.1]: Stopping remaining processes with SIGKILL
2017-04-26T02:17:50.134619+00:00 heroku[web.1]: Process exited with status 137

我从django.apps导入AppConfig

中实例化from pubnub.pubnub import PubNub from pubnub.pnconfiguration import PNConfiguration from pubnub.callbacks import SubscribeCallback class MySubscribeCallback(SubscribeCallback): def presence(self, pubnub, presence): pass def status(self, pubnub, status): pass def message(self, pubnub, message): pass # I'll actually do the storage here later def create_pubnub(): pnconf = PNConfiguration() pnconf.subscribe_key = 'sub-c-blargyblargblarg' pnconf.publish_key = 'pub-c-blargyblargblarg' pubnub = PubNub(pnconf) pubnub.add_listener(MySubscribeCallback()) pubnub.subscribe().channels('achannel').execute() return pubnub 中的pubnub内容
apps.py

1 个答案:

答案 0 :(得分:0)

从服务器订阅是例外

虽然某些PubNub客户成功做到了这一点,但从服务器端订阅通常是例外而不是规则。它确实有其正确的用例。

在这种情况下,最佳做法是使用PubNub BLOCKSPOST从PubNub网络发布到服务器的每条消息,而不是让服务器在某个频道或每个频道上收听做同样的事。