2010-08-30 75 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