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
PubNubAsyncio.SDK_VERSION
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 usinge.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)
return
else:
print(str(e.result))
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():
try:
result = await pubnub.publish().channel("my_channel").message("hello!").result()
print(str(result))
except PubNubException as e:
print("Error %s" % str(e))
if e.status is not None:
print("Error category #%d" % e.status.category)