Поддерживает ли 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, и жизнь должна быть хорошей!