2010-08-30 32 views
3

我需要發出一個出站ftp請求來檢索一些小的 文件。有6個文件每個小於10K,我只需要 每隔幾個小時檢索一次。使用Python的谷歌appengine的出站FTP請求

當我試着使用urllib2.urlopen做到這一點(「ftp://xxx.xxx.xxx」)我得到一個 AttributeError異常:‘模塊’對象有沒有屬性 ‘FTP_PORT’。

我已經通過文檔閱讀,看你只允許 使HTTP和HTTPS請求從AppEngine上,不幸的是我 應用需要消耗FTP數據,這是否意味着要求我 不能使用AppEngine上在所有?我真誠希望不會。

那麼有其他人在這裏找到了一種方法來使ftp請求,也許與 付費帳戶?如果不是其他人選擇做什麼? azure或ec2允許出站FTP請求?

回答

5

你是對的。 Google App Engine不允許您發送FTP請求。甚至沒有付費帳戶。

我不得不在EC2上使用LAMP實例來處理通過CURL進行的FTP操作,並且從GAE向它發出http請求。

+1

謝謝你,我希望能夠做同樣的事情。我會試一試。 再次感謝。 – rabs 2010-08-30 02:05:46

0

drivehq.com是另一種選擇。它提供了一個web + ftp服務器。所以我需要接口的第三方(只說FTP)會通過FTP上傳文件。然後我會在appengine上找到他們。

2

這個限制用來驅動我堅果;通過動態實例化EC2從屬工作人員轉發FTP數據來實現開銷感覺像是真正浪費時間。幸運的是,從April 9 this year (SDK 1.7.7)開始,這不再是問題。出站套接字(例如FTP)通常可用於所有啓用結算功能的應用程序。

套接字API概述(Python)的:https://developers.google.com/appengine/docs/python/sockets/

+0

你能夠成功地將文件存儲在應用程序引擎上的ftp服務器上嗎? – aschmid00 2014-05-01 15:09:19

+0

@ aschmid00:是的,沒問題。 – mblomdahl 2014-05-02 17:24:29

+0

@ aschmid00:這是[我的FTP攝入CRON作業的簡短片段](http://pastebin.com/2kfK1dbv)。一旦閱讀到您的StringIO實例,我建議您繼續使用新的GAE客戶端庫將FTP輸出流式傳輸到Google Cloud Storage中(因爲它們不推薦使用Blobstore並且Datastore限制爲大約1 MB條目 - CSV文件I負載大部分在600-800MB範圍內)。 B.t.w.抱歉過多的編輯,我是新的評論功能。 :-) – mblomdahl 2014-05-02 17:35:42