2010-08-30 3 views
3

Мне нужно сделать исходящий запрос ftp, чтобы получить несколько небольших файлов . Есть 6 файлов, каждый менее 10K, и мне нужно только получить их раз в пару часов.Исходящий запрос FTP из Google appengine с использованием python

Когда я пытаюсь сделать это с urllib2.urlopen («ftp://xxx.xxx.xxx») Я получаю в AttributeError исключение: „модуль“ объект не имеет атрибута 'ftp_port.

Я прочитал документацию и посмотреть, вы только позволили сделать HTTP и HTTPS запросы от AppEngine, к сожалению, мое приложение должно потреблять данные FTP, делает это требование означает, я не могу использовать AppEngine вообще ? Я искренне надеюсь, что нет.

Так кто-нибудь еще нашел способ сделать ftp-запросы, возможно, с платной учетной записью? И если не то, что другие люди выбрали? ли azure или ec2 разрешают исходящие запросы ftp?

ответ

5

Вы правы. Google App Engine не позволяет выполнять FTP-запросы. Даже с платной учетной записью.

Мне пришлось использовать экземпляр LAMP на EC2, который обрабатывает FTP'ы через CURL и делает http-запросы от GAE.

+1

Спасибо, я надеялся, чтобы быть в состоянии сделать что-то подобное. Я дам ему попробовать. Еще раз спасибо. – rabs

0

drivehq.com - еще один вариант. Он предоставляет как сервер web + ftp. Поэтому третья сторона, с которой мне нужно было взаимодействовать (которая говорила только с FTP), загружала файлы через FTP. И тогда я бы набросал их на appengine.

2

Это ограничение использовалось для вождения меня гайками; реализуя накладные расходы, связанные с динамическим созданием подчиненных рабочему ведомому EC2 для ретрансляции данных FTP, которые ощущаются как настоящая трата времени. К счастью, начиная с April 9 this year (SDK 1.7.7) это не проблема. Исходные сокеты (например, FTP) обычно доступны для всех приложений с поддержкой биллинга.

Sockets API Обзор (Python): https://developers.google.com/appengine/docs/python/sockets/

+0

Вы смогли успешно сохранить файл на ftp-сервере в приложении? – aschmid00

+0

@ aschmid00: Да, никаких проблем. – mblomdahl

+0

@ aschmid00: Вот небольшой отрывок из моего задания на использование CRON на FTP-сервере (http://pastebin.com/2kfK1dbv). После того, как вы прочтете свой экземпляр StringIO, я бы посоветовал вам перевести поток FTP в Google Cloud Storage с помощью новой клиентской библиотеки GAE (поскольку они устарели, Blobstore и Datastore ограничены несколькими записями в 1 МБ - файлы CSV I загрузка в основном в диапазоне 600-800 МБ). B.t.w. извините за чрезмерные изменения, я новичок в этой функции комментариев. :-) – mblomdahl

Смежные вопросы