我想知道是否可以将文件从 Google App Engine 应用程序的 servlet FTP/SFTP 传输到远程 FTP/SFTP 服务器。或者也许通过在任务队列上创建一个任务......有人得到这个吗?
GAE 的文档说“尝试打开套接字或写入文件的字节码将引发运行时异常”
感谢您的时间!
我想知道是否可以将文件从 Google App Engine 应用程序的 servlet FTP/SFTP 传输到远程 FTP/SFTP 服务器。或者也许通过在任务队列上创建一个任务......有人得到这个吗?
GAE 的文档说“尝试打开套接字或写入文件的字节码将引发运行时异常”
感谢您的时间!
对的,这是可能的!我们使用它将 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!!!'
套接字现在可在 App Engine 上使用。您可以在 App Engine 上使用 ftp 客户端库,但有一个警告。只有被动模式才能工作。此外,在被动模式下,有时第二个连接会尝试从不同的 IP 地址进行连接,某些服务器(如 ftp.kernel.org)会忽略该地址。如果失败,请再试一次,最终您将获得相同的 IP 地址,并且可以进行传输。
GAE 的文档说“尝试打开套接字或写入文件的字节码将引发运行时异常”
如果我没记错的话,这几乎排除了从 GAE 传输文件的可能性。
Google 员工在此确认无法打开端口: http://groups.google.com/group/google-appengine/browse_thread/thread/21948f691660ca2/708036e7f2af595b?lnk=gst&q= ftp#708036e7f2af595b
但是,如果您仔细阅读,他说不允许打开端口“监听”。你应该试一试。我很想听听你的实验结果!:)
您无法在 App Engine 上打开任何类型的套接字。所有传出请求都必须通过 HTTP。
按照这个链接
https://cloud.google.com/appengine/docs/python/sockets/
限制和限制的要点之一是
不支持 FTP
我在 GAE 对不同的数据包使用不同的端口时遇到问题,在 GAE 使用同一个端口之前,唯一的解决方法是多次尝试吗?