我正在开发一个与RackSpace cloudfiles通信的Ruby on Rails应用程序(类似于Amazon S3但缺少某些功能).
由于缺乏每对象访问权限和查询字符串身份验证的可用性,因此必须通过应用程序调解用户下载.
在Rails 2.3中,看起来您可以动态构建响应,如下所示:
# Streams about 180 MB of generated data to the browser.
render :text => proc { |response, output|
10_000_000.times do |i|
output.write("This is line #{i}\n")
end
}
Run Code Online (Sandbox Code Playgroud)
(来自http://api.rubyonrails.org/classes/ActionController/Base.html#M000464)
而不是10_000_000.times...我可以在那里转储我的cloudfiles流生成代码.
麻烦的是,这是我在Rails 3中尝试使用这种技术时得到的输出.
#<Proc:0x000000010989a6e8@/Users/jderiksen/lt/lt-uber/site/app/controllers/prospect_uploads_controller.rb:75>
Run Code Online (Sandbox Code Playgroud)
看起来可能call没有调用proc对象的方法?还有其他想法吗?
我正在将文件从S3复制到Cloudfiles,我想避免将文件写入磁盘.Python-Cloudfiles库有一个看起来像我需要的object.stream()调用,但我找不到boto中的等效调用.我希望我能够做到这样的事情:
shutil.copyfileobj(s3Object.stream(),rsObject.stream())
Run Code Online (Sandbox Code Playgroud)
这可能与boto(或我认为任何其他s3库)?
我需要将一些网站的图像存储推送到可以无限扩展的服务(S3,CloudFiles等).到目前为止,我们已经能够允许我们的用户使用Python的成像库动态生成自定义缩略图大小,并在Django中提供sorl-thumbnail的帮助.
通过将我们的图像移动到像S3这样的东西,快速创建动态缩略图的能力就会丢失.我们可以:
此时#3看起来是一个解决问题的简单方法,但缺点很少.来自该网站的一些快速测试和数据表明,质量没有预期的那么糟糕(我们可以确保保持纵横比).
关于我们可能没有考虑的其他选择或缺点的任何建议?
注意:图像是数码照片,仅用于在网络上显示.尺寸范围从1000到50像素的高度/宽度.
browser image-processing amazon-s3 cloudfiles python-imaging-library
我正在使用cloudfile模块将文件上传到rackspace云文件,使用类似这样的伪代码:
import cloudfiles
username = '---'
api_key = '---'
conn = cloudfiles.get_connection(username, api_key)
testcontainer = conn.create_container('test')
for f in get_filenames():
obj = testcontainer.create_object(f)
obj.load_from_filename(f)
Run Code Online (Sandbox Code Playgroud)
我的问题是我要上传很多小文件,这种方式需要太长时间.
埋藏在文档中,我看到有一个类ConnectionPool,据说可以用来并行上传文件.
有人可以说明我如何让这段代码一次上传多个文件?
我们正在为所有媒体使用本地文件系统,并将其移至云文件(Rackspace).沮丧的是我们使用ImageManager插件,它似乎严重依赖于执行文件系统命令来生成文件列表等.
您是否有使用TinyMCE并从云存储服务插入图像和资产的经验?
我刚开始使用Rackspace Cloud Files的PHP API.到目前为止一切都那么好 - 但我使用它作为一个穷人的内存缓存,存储序列化数据的键/值对.
我的应用程序试图通过其键(API语言中的"名称")使用以下内容获取现有的缓存对象:
$obj = $this->container->get_object($key);
Run Code Online (Sandbox Code Playgroud)
问题是,如果对象不存在,API会抛出致命错误而不是简单地返回false.通过API执行此操作的"正确"方法可能是执行此操作
$objs = $this->container->list_objects();
Run Code Online (Sandbox Code Playgroud)
然后$key在该列表中检查我的值.但是,这似乎比false从get_object请求返回更多的时间/ CPU密集.
有没有办法在云文件中执行"搜索对象"或"检查对象是否存在"?
谢谢
完整脚本:https://gist.github.com/4476526
有问题的具体代码是
# Cloud Files username & API key
username = ''
key = ''
# Source and destination container names
originContainerName = ''
targetContainerName = ''
...
def cloudConnect():
global originContainer
global targetContainer
global connection
print "Creating connection"
connection = cloudfiles.get_connection(username,key,servicenet=True)
print "-- [DONE]"
print "Accessing containers"
originContainer = connection.create_container(originContainerName)
targetContainer = connection.create_container(targetContainerName)
print "-- [DONE]"
return
Run Code Online (Sandbox Code Playgroud)
该脚本工作得非常好,但是我已经在多个地方读过全局变量应该犹豫不决的使用,并且几乎总有一种更好的方法可以在没有它们的情况下做同样的事情.这是真的?如果是这样,我应该如何修复此脚本?对我来说,使用全局连接和容器变量似乎更容易,而不是将这些对象作为参数传递给多个函数.
我有一个Spring MVC 4.0.1 Web应用程序,需要将文件上传到Rackspace Cloud Files.我正在使用Apache jClouds来执行此操作.尝试使用以下代码创建BlobStore时:
BlobStoreContext context = ContextBuilder.newBuilder("cloudfiles-us").credentials("username","password").buildView(BlobStoreContext.class);
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
com.google.inject.CreationException: Guice creation errors:
1) No implementation for com.google.common.base.Supplier<java.lang.String> annotated with @org.jclouds.openstack.swift.TemporaryUrlKey() was bound.
while locating com.google.common.base.Supplier<java.lang.String> annotated with @org.jclouds.openstack.swift.TemporaryUrlKey()
for parameter 4 at org.jclouds.openstack.swift.blobstore.SwiftBlobSigner.<init>(SwiftBlobSigner.java:88)
at org.jclouds.cloudfiles.CloudFilesApiMetadata$CloudFilesTemporaryUrlExtensionModule.bindRequestSigner(CloudFilesApiMetadata.java:101)
2) No implementation for org.jclouds.openstack.swift.CommonSwiftClient was bound.
while locating org.jclouds.openstack.swift.CommonSwiftClient
for parameter 4 at org.jclouds.cloudfiles.blobstore.CloudFilesBlobStore.<init>(CloudFilesBlobStore.java:63)
at org.jclouds.cloudfiles.blobstore.config.CloudFilesBlobStoreContextModule.configure(CloudFilesBlobStoreContextModule.java:64)
3) No implementation for org.jclouds.openstack.swift.CommonSwiftClient was bound.
while locating org.jclouds.openstack.swift.CommonSwiftClient
for parameter 0 at org.jclouds.openstack.swift.blobstore.strategy.internal.SequentialMultipartUploadStrategy.<init>(SequentialMultipartUploadStrategy.java:51)
while locating com.google.inject.Provider<org.jclouds.openstack.swift.blobstore.strategy.internal.MultipartUploadStrategy>
for parameter 14 at org.jclouds.cloudfiles.blobstore.CloudFilesBlobStore.<init>(CloudFilesBlobStore.java:63)
at …Run Code Online (Sandbox Code Playgroud) 如何将Paperclip与CloudFiles一起使用?我找到了paperclip-cloudfiles,但在描述中它说它可能会被删除,最后一次提交是在2010年.
有没有办法强制过期或撤销OpenStack Swift令牌?我正在寻找一些API方法来做到这一点.
Bing/Google搜索没有返回任何有用的内容.
openstack-swift cloudfiles rackspace-cloud oauth-2.0 openstack
有没有人成功安装Mosso(cloudfiles)python模块?我正在尝试安装它并收到以下错误.
python-cloudfiles-1.3.1]# python setup.py install
running install
running build
running build_py
running install_lib
byte-compiling /usr/lib/python2.3/site-packages/cloudfiles/container.py to container.pyc
File "/usr/lib/python2.3/site-packages/cloudfiles/container.py", line 74
@requires_name(InvalidContainerName)
^
SyntaxError: invalid syntax
byte-compiling /usr/lib/python2.3/site-packages/cloudfiles/storage_object.py to storage_object.pyc
File "/usr/lib/python2.3/site-packages/cloudfiles/storage_object.py", line 85
@requires_name(InvalidObjectName)
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)