Не удается отправить строку base64 в PubNub
Я использую модуль PyCamera Raspberry Pi, чтобы захватить изображение и сохранить как .jpg
, сначала кодируем изображение с помощью base64.encodestring(). но при отправке закодированной строки на сервер PubNub я получаю сообщение об ошибке my_publish_callback
как
('ERROR: ', 'Expecting value: line 1 column 1 (char 0)')
('ERROR: ', JSONDecodeError('Expecting value: line 1 column 1 (char 0)',))
Я пытался использовать base64.b64encode(), но все равно получаю те же ошибки. Я пробовал скрипт в Python 2 и 3;
def my_publish_callback(envelope, status):
if not status.is_error():
pass # Message successfully published to specified channel.
else:
#print("recv: ", envelope)
print("ERROR: ", status.error_data.information)
print("ERROR: ", status.error_data.exception)
def publish(channel, msg):
pubnub.publish().channel(channel).message(msg).async(my_publish_callback)
def captureAndSendImage():
camera.start_preview()
time.sleep(2)
camera.capture("/home/pi/Desktop/image.jpg")
camera.stop_preview()
with open("/home/pi/Desktop/image.jpg", "rb") as f:
encoded = base64.encodestring(f.read())
publish(myChannel, str(encoded))
Я не могу найти или распечатать полную трассировку ошибок, чтобы получить больше подсказок о том, где произошла ошибка. Но похоже, что PubNub пытается проанализировать данные в JSON, и это не удается.
1 ответ
Я понял, что размер файла.jpg составляет 154 КБ, тогда как максимальный размер пакета PubNub составляет 32 КБ, так что об этом должно быть ясно сказано все. PubNub рекомендует отправлять большие сообщения, разбивая их и переупорядочивая их на стороне подписчика. Спасибо @Craig за ссылку на эту ссылку. Это полезно, хотя support.pubnub.com/support/discussions/topics/14000006326