PythonAsyncioAsyncioTwistedTornadoNativePython-aiohttp V4 SDK Troubleshooting Guide


These docs are for PubNub 4.0 for Python-aiohttp V4 which is our latest and greatest! For the docs of the older versions of the SDK, please check PubNub 3.0 for Python, PubNub 3.0 for Python-Tornado and PubNub 3.0 for Python-Twisted.

If you have questions about the PubNub for Python SDK, please contact us at

import pubnub
import logging

pubnub.set_stream_logger('pubnub', logging.DEBUG)
from pubnub import PubNubAsyncio


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.
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)

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)