FTP-файлы из Google App Engine - PullRequest
       14

FTP-файлы из Google App Engine

4 голосов
/ 26 декабря 2009

Мне было интересно, возможно ли передать по FTP / SFTP файл из сервлета приложения Google App Engine на удаленный сервер FTP / SFTP. Или, может быть, создав задачу на TaskQueue ... Кто-нибудь получил это?

В документации GAE говорится, что "байт-код, который пытается открыть сокет или записать в файл, вызовет исключение времени выполнения"

Спасибо за ваше время!

Ответы [ 5 ]

2 голосов
/ 04 июня 2013

Сокеты теперь доступны в App Engine. Вы можете использовать клиентскую библиотеку ftp в App Engine, но есть одно предупреждение. Будет работать только пассивный режим. Кроме того, в пассивном режиме иногда второе соединение пытается подключиться с другого IP-адреса, который некоторые серверы (например, ftp.kernel.org) игнорируют. Если это не удалось, попробуйте еще раз, в конце концов вы получите тот же IP-адрес, и передача будет работать.

1 голос
/ 16 апреля 2015

ДА, это возможно! Мы используем его для отправки файлов CSV из Google Cloud Storage стороннему поставщику, который не имеет какого-либо REST / SOAP API в своей системе. Вот пример в Python:

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!!!'
1 голос
/ 26 декабря 2009

В документации GAE говорится, что "байт-код, который пытается открыть сокет или записать в файл, вызовет исключение времени выполнения"

Если я не ошибаюсь, это в значительной степени исключает FTP-файл из GAE.

Здесь сотрудник Google подтверждает, что открытие порта невозможно: http://groups.google.com/group/google-appengine/browse_thread/thread/21948f691660ca2/708036e7f2af595b?lnk=gst&q=ftp#708036e7f2af595b

Но если вы внимательно прочитаете, он говорит, что открытие порта для прослушивания запрещено. Вы должны дать ему шанс. Я хотел бы услышать от вас результаты этого эксперимента! :)

0 голосов
/ 24 февраля 2016

По этой ссылке

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

один из пунктов под ограничениями и ограничениями -

FTP не поддерживается

У меня проблемы с GAE, использующим другой порт для разных пакетов, является ли единственной возможностью для этого несколько раз попробовать, пока GAE не использует один и тот же порт?

0 голосов
/ 02 января 2010

Вы не можете открывать сокеты - любого рода - в App Engine. Все исходящие запросы должны быть через HTTP.

...