2009-12-26 4 views
4

Google App Engine 애플리케이션의 서블릿에서 원격 FTP/SFTP 서버로 파일을 FTP/SFTP로 전송할 수 있는지 궁금합니다. 아니면 TaskQueue에 대한 작업을 작성하여 ... 누군가가 이것을 가지고 있습니까?Google App Engine의 FTP 파일

GAE의 문서는

이 시간 내 주셔서 감사 "바이트 코드는 런타임 예외가 발생합니다 소켓을 열거 나 파일에 쓰려고 시도하는"것을 말한다!

+0

프로그래밍 방식으로 하시겠습니까? 그렇지 않으면 superuser.com –

+2

@Lex에 속해 있다고 생각합니다. 포스터는 특히 서블릿에서 포스터를 만들고 싶다고 말합니다. 이 질문은 여기에 속합니다. –

답변

1

GAE의 문서는 내가에서 파일을 FTPing이 거의 규칙 밖으로 잘못 아니에요 경우

"소켓을 열거 나 파일에 쓰기를 시도 바이트 코드는 런타임 예외가 발생합니다"라고 말한다 GAE. http://groups.google.com/group/google-appengine/browse_thread/thread/21948f691660ca2/708036e7f2af595b?lnk=gst&q=ftp#708036e7f2af595b

을하지만 당신은주의 깊게 읽는다면, 그는 포트가없는 허용 "수신 대기"를 열고 말한다 :

다음은 구글 직원이 포트를 여는 것은 불가능합니다 확인합니다. 당신은 한 발을 내줘야합니다. 이 실험의 결과를 듣고 싶습니다. :)

+1

고마워요! 나는 그것을 곧 읽을 것이다. – Pablo

+0

더 이상 true가 아닙니다 - 소켓을 사용할 수 있습니다. – Praxiteles

+0

예, 내 의견은 2009 년에 유효했습니다. ;-) – Sri

0

App Engine에서는 모든 정렬의 소켓을 열 수 없습니다. 모든 발신 요청은 HTTP를 통해 이루어져야합니다.

+0

더 이상 true - ftp 소켓을 사용할 수 없습니다 : [python] (https://developers.google.com/appengine/docs/python/sockets/), [java ] (https://developers.google.com/appengine/docs/java/sockets/), [php] (https://cloud.google.com/appengine/docs/php/sockets/) 및 [go] (https://cloud.google.com/appengine/docs/go/sockets/) – hyip

2

이제 App Engine에서 소켓을 사용할 수 있습니다. App Engine에는 ftp 클라이언트 라이브러리를 사용할 수 있지만 한 가지주의 사항이 있습니다. 수동 모드 만 작동합니다. 또한 수동 모드에서 두 번째 연결은 ftp.kernel.org와 같은 일부 서버에서 무시하는 다른 IP 주소에서 연결을 시도합니다. 실패하면 다시 시도하십시오. 결국 동일한 IP 주소를 얻게되고 전송이 작동합니다.

+3

어떤 도서관을 이용하십니까? commons-net을 시도했지만 허용 목록 제한 (javax.net.ServerSocketFactory)으로 인해 작동하지 않습니다. – Fabien

1

예 가능합니다! Google Cloud Storage의 CSV 파일을 시스템에 REST/SOAP API가없는 제 3의 공급 업체로 보내는데 사용합니다. 이 링크 제한 사항 아래에있는 점의

https://cloud.google.com/appengine/docs/python/sockets/

한 다음

from ftplib import FTP 
import cloudstorage as gcs 

# Connect to vendor FTP site 
ftp = FTP('www.somevendor.com','vendorusername', 'vendormypassword') 

# Move into the specific folder where you want to place the file 
ftp.cwd('/path_to/target_folder') 

# Set the file name 
filename = 'my_csv_file.csv' 

# Get the file you want to FTP from Google Cloud Storage 
filepath = '/myapp.appspot.com/my_csv_file.csv' 

# Open the file to prep for transfer 
gcs_file = gcs.open(filepath,'r') 

# Initiate the file transfer 
ftp.storlines('STOR '+filename,gcs_file) 

# Close the ftp connection 
ftp.quit() 

# Close the file 
gcs_file.close() 

return 'You are done...MONEY!!!' 
0

FTP는

지원되지 않습니다됩니다 : 다음은 파이썬에서 예입니다 다른 패킷에 대해 다른 포트를 사용하는 GAE에 문제가 발생하는 경우에만 여러 번 시도해 볼 수 있습니다. GAE는 같은 포트를 사용합니까?