2010-04-22 33 views
6

Ahora uso mi propio programa FTP de Java para objetos ftp desde mi PC al servidor del sitio web de mi ISP.¿Google App Engine es compatible con ftp?

Quiero usar el servlet de Google App Engine para obtener los mensajes de IPN de Paypal, luego almacenar los mensajes en mis propios objetos y transferir los objetos al servidor del sitio web de mi ISP, ¿es esto factible? Escuché que Google App Engine no es compatible con FTP.

No espero que Google lo haga por mí, pero ¿puedo usar mi propio programa Java FTP en la aplicación web que cargué en App Engine para hacerlo?

Frank

+0

¿Por qué no solo hospedar los datos _on_ App Engine? FTPing archivos a un servidor web ISP parece innecesariamente indirecta. –

+0

Tal vez porque la información está alojada en otro lugar, se genera y pertenece a terceros? – ZiglioUK

Respuesta

8

No, no se puede abrir ninguna conexión de socket, excepto mediante el uso de URL Fetch service en HTTP/HTTPS para estos rangos de puertos:

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

+1

FTP ahora funciona en Google App Engine. Vea la respuesta a continuación para el código de trabajo. – Praxiteles

5

A partir de April 9 this year (SDK 1.7.7) esto ya no es un problema. Los sockets de salida (por ejemplo, FTP) generalmente están disponibles para todas las aplicaciones habilitadas para facturación.

zócalo generales del API (Java): https://developers.google.com/appengine/docs/java/sockets/

+0

"facturación habilitada" es la frase clave ... – Drux

+0

¿Esto significa que también es posible sFTP? – Praxiteles

+0

Vea esto para [Python] (https://developers.google.com/appengine/docs/python/sockets/) – hyip

-1

Usted puede utilizar el cliente FTP Apache Commons (org.apache.commons.net.ftp.FTPClient) si se pone en modo pasivo. Sólo haga lo siguiente:

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

Entonces no será llamar ServerSocketFactory, y la vida debe ser bueno!

3

ACTUALIZACIÓN: es posible que nuestro código siguiente ya no funcione. Este código FTP funcionó para nosotros anteriormente, pero ahora vemos un comentario que dice que FTP ya no es compatible con App Engine. Vea el enlace a continuación. Si prueba este código y funciona o no funciona para FTP directo (TLS NO es compatible por cierto), coméntelo.


Sí. FTP ahora funciona en Google App Engine. (La respuesta aceptada está desactualizada y ya no es verdadera.)

Aquí está el código probado y de trabajo en 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) 

De nota, FTP TLS no parece funcionar actualmente. (Se produce un error al intentar hacer "desde ftplib import FTP_TLS")

+0

Además, todavía está roto si necesita el modo activo en lugar del modo pasivo (intente agregar un 'ftp.set_pasv (False) ', según mi respuesta a http://stackoverflow.com/questions/28264627/unable-to-dowload-csv-file-from-ftp-server-in-app-engine/28266330#28266330. –

+4

Ahora ellos dice que no se admite FTP. FU App Engine! https://cloud.google.com/appengine/docs/java/sockets/ – ZiglioUK