понедельник, 7 апреля 2014 г.

Google App Engine печаль :(


Захотел наконец то сделать что-нибудь полезное на Google App Engine.
Самое полезное - это заставить его читать stream с моей IP камеры и писать видео в
Google Cloud Storage. Казалось бы ничего солжного:

response = urllib2.urlopen("http://myhost/videostream.asf?user=guest&pwd=guest&resolution=64")

block_size = 1024
while True:
     try:
       buffer = response.read(block_size)
...
Но Гугл оказался хитер. Ибо негоже это, держать персистент соединение со всякими там непорядочными хостами, да еще за бесплатно. От лукавого это.
Оказывается в App Engine своя реализация механизма URL Fetch, и поверх неё работают  urllib, urllib2httplib и все остальные сетевые товарищи. И как не старайся, а вычитать и сохранить stream не получится. Т.к URL Fetch не отдаст управление, пока не вычитает весь контент, а как известно у потока нет конца.

Опечален. Хотелось бесплатно.