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

2024-04-26 08:13:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在构建一个Django应用程序来监听Pubnub提要并将消息存储在数据库中。我在我的应用程序的apps.pyAppConfigready()方法中创建一个pubnub侦听器。你知道吗

在Heroku上启动我的应用程序时,我得到了一个非常无用的错误

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想要清理AppConfig进程,并对其中挂着一个pubnub对象感到不安。这就是问题所在吗?我该怎么修?你知道吗

我也看到了(至少是通过示例隐式地)Heroku recommends using the twisted interface.我没有这样做是不好的吗?你知道吗

以下是相关代码:

我创造了一个我的PubNub.py基于Pubnub's hello world example

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

我从中实例化apps.py中的pubnub内容django.apps软件导入AppConfig

from .mypubnub import create_pubnub

class MyAppConfig(AppConfig):
    name = 'myapp'

    def ready(self):
        pn = create_pubnub()

Tags: appsfrompyimportself应用程序herokudef
1条回答
网友
1楼 · 发布于 2024-04-26 08:13:12

从服务器订阅是例外

虽然这是一些PubNub客户成功做到的事情,但从服务器端订阅通常是例外而不是规则。不过,它确实有其适当的用例。你知道吗

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

相关问题 更多 >