Google App Engine アプリケーションのサーブレットからリモートの FTP/SFTP サーバーにファイルを FTP/SFTP できるかどうか疑問に思っていました。または、TaskQueue に Task を作成することで...誰かこれを手に入れましたか?
GAE のドキュメントには、「ソケットを開こうとしたり、ファイルに書き込もうとしたバイトコードは実行時例外をスローする」と書かれています。
お時間をいただきありがとうございます!
Google App Engine アプリケーションのサーブレットからリモートの FTP/SFTP サーバーにファイルを FTP/SFTP できるかどうか疑問に思っていました。または、TaskQueue に Task を作成することで...誰かこれを手に入れましたか?
GAE のドキュメントには、「ソケットを開こうとしたり、ファイルに書き込もうとしたバイトコードは実行時例外をスローする」と書かれています。
お時間をいただきありがとうございます!
はい、可能です!これを使用して、Google Cloud Storage から、システムに REST/SOAP API をまったく持たないサードパーティ ベンダーに CSV ファイルを送信します。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 クライアント ライブラリを使用できますが、注意点が 1 つあります。パッシブ モードのみが機能します。また、パッシブ モードでは、2 番目の接続が別の IP アドレスから接続しようとすることがありますが、一部のサーバー (ftp.kernel.org など) は無視します。失敗した場合は、もう一度やり直してください。最終的には同じ IP アドレスが取得され、転送が機能します。
GAE のドキュメントには、「ソケットを開こうとしたり、ファイルに書き込もうとしたバイトコードは実行時例外をスローする」と書かれています。
私が間違っていなければ、これは GAE からファイルを FTP 送信することをほとんど除外します。
ここでは、Google の従業員がポートを開くことができないことを確認しています。
しかし、注意深く読むと、「リッスン」するためにポートを開くことは許可されていないと述べています。あなたはそれを試してみるべきです。この実験の結果を教えていただければ幸いです。:)
App Engine では、ソケットを開くことはできません。すべての送信リクエストは HTTP 経由である必要があります。