Troubleshooting PubNub Python-Asyncio SDK

How to enable logging

import pubnub
import logging

pubnub.set_stream_logger('pubnub', logging.DEBUG)

How to find the version of your SDK

Access your SDK version via constant

from pubnub import PubNubAsyncio

Error handling with future()

In case of future() calls errors will be wrapped out by either AsyncioEnvelope or PubNubAsyncioException which both implement two object fields:

  • e.result - a request result object in case of success, otherwise None
  • e.status - PNStatus object with useful information about the finished request. You may check if it was an error or a success using e.is_error() helper.

Future() usage

async def publish_future():
e = await pubnub.publish().channel("my_channel").message("hello!").future()
if e.is_error():
print("Error %s" % str(e))
print("Error category #%d" % e.status.category)

Error handling with result()

result() calls will return you just a result of the request without any state information. Errors should be caught using try/except blocks. For server-side errors a e.status field is populated to provide you more information about the request:

async def publish_result():
result = await pubnub.publish().channel("my_channel").message("hello!").result()
except PubNubException as e:
print("Error %s" % str(e))
if e.status is not None:
print("Error category #%d" % e.status.category)
Last updated on