Поддерживает ли Google App Engine ftp?

теперь я использую свою собственную программу JAVA FTP для ftp-объектов с моего ПК на сервер веб-сайта моего провайдера.

Я хочу использовать сервлет Google App Engine для получения сообщений Paypal IPN, а затем хранить сообщения в моих собственных объектах и ftp-объекты на сервере веб-сайта моего провайдера, это выполнимо ? Я слышал, что Google App Engine не поддерживает FTP.

Я не ожидаю, что Google сделает это за меня, но могу ли я использовать свою собственную программу JAVA FTP в веб-приложении, которое я загружаю в App Engine, чтобы сделать это ?

Фрэнк

4 ответов


нет, вы не можете открыть любое соединение, кроме как с помощью URL-адрес выборки сервис по HTTP / HTTPS к этим диапазонам портов:

80-90, 440-450, 1024-65535.


по состоянию на 9 апреля этого года (SDK 1.7.7) это не проблема. Исходящие сокеты (например, FTP) обычно доступны для всех приложений с поддержкой биллинга.

обзор API сокета (Java):https://developers.google.com/appengine/docs/java/sockets/


UPDATE: наш код ниже может больше не работать. Этот FTP-код работал для нас раньше, но теперь мы видим комментарий ниже, который говорит, что FTP больше не поддерживается в App Engine. См. ссылку ниже. Если вы попробуете этот код, и он работает или не работает для вас для прямого FTP (TLS не поддерживается BTW) - прокомментируйте.


да. FTP теперь работает на Google App Engine. (Принятый ответ устарел и больше не соответствует действительности.)

здесь протестирован и работает код на GAE.

#!/usr/bin/env python
from google.appengine.ext import webapp
from ftplib import FTP

class HwHandler(webapp.RequestHandler):
                 def get(self):
                   self.response.out.write('FTP Starting...<br>')
                   ftp = FTP('ftp_site.com') 
                   ftp.login('login', 'password')
                   ftp.retrlines('LIST')  # list directory contents
                   self.response.out.write('FTP opened')
                   ftp.quit()

app = webapp.WSGIApplication([
    ('/', HwHandler)
 ], debug=True)

обратите внимание, что FTP TLS в настоящее время не работает. (Попытка сделать "из ftplib импорт FTP_TLS" не удается.)


вы можете использовать клиент Апач Викискладе ФТП (орг."Апач".общин.чистая.по FTP.FTPClient) если поставить его в пассивный режим. Просто сделайте следующее:

    FTPClient client = new FTPClient();
    client.connect(FTP_HOST);
    client.enterLocalPassiveMode();

тогда он не будет вызывать ServerSocketFactory, и жизнь должна быть хорошей!