4

我想知道是否可以将文件从 Google App Engine 应用程序的 servlet FTP/SFTP 传输到远程 FTP/SFTP 服务器。或者也许通过在任务队列上创建一个任务......有人得到这个吗?

GAE 的文档说“尝试打开套接字或写入文件的字节码将引发运行时异常”

感谢您的时间!

4

5 回答 5

2

对的,这是可能的!我们使用它将 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!!!'
于 2015-04-16T14:42:12.160 回答
2

套接字现在可在 App Engine 上使用。您可以在 App Engine 上使用 ftp 客户端库,但有一个警告。只有被动模式才能工作。此外,在被动模式下,有时第二个连接会尝试从不同的 IP 地址进行连接,某些服务器(如 ftp.kernel.org)会忽略该地址。如果失败,请再试一次,最终您将获得相同的 IP 地址,并且可以进行传输。

于 2013-06-04T07:56:53.133 回答
1

GAE 的文档说“尝试打开套接字或写入文件的字节码将引发运行时异常”

如果我没记错的话,这几乎排除了从 GAE 传输文件的可能性。

Google 员工在此确认无法打开端口: http://groups.google.com/group/google-appengine/browse_thread/thread/21948f691660ca2/708036e7f2af595b?lnk=gst&q= ftp#708036e7f2af595b

但是,如果您仔细阅读,他说不允许打开端口“监听”。你应该试一试。我很想听听你的实验结果!:)

于 2009-12-26T11:31:47.537 回答
0

您无法在 App Engine 上打开任何类型的套接字。所有传出请求都必须通过 HTTP。

于 2010-01-01T21:36:12.350 回答
0

按照这个链接

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

限制和限制的要点之一是

不支持 FTP

我在 GAE 对不同的数据包使用不同的端口时遇到问题,在 GAE 使用同一个端口之前,唯一的解决方法是多次尝试吗?

于 2016-02-23T21:42:14.603 回答