我注意到boto的api返回值取决于存储桶位置.我有以下代码:
con = S3Connection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
bucket = con.get_bucket(S3_BUCKET_NAME)
keys = bucket.list(path)
for key in keys:
print key
Run Code Online (Sandbox Code Playgroud)
我在两个桶中运行,一个在美国西部,另一个在爱尔兰.这个桶中的路径是一个子目录,对爱尔兰我得到子目录和下面的任何键,对我们西方我只得到下面的键.
所以爱尔兰给出:
<Key: <bucketName>,someDir/>
<Key: <bucketName>,someDir/someFile.jpg>
<Key: <bucketName>,someDir/someOtherFile.jpg>
Run Code Online (Sandbox Code Playgroud)
美国标准给出的地方:
<Key: <bucketName>,someDir/someFile.jpg>
<Key: <bucketName>,someDir/someOtherFile.jpg>
Run Code Online (Sandbox Code Playgroud)
显然,无论存储桶位置如何,我都希望能够编写相同的代码.任何人都知道我可以做些什么来解决这个问题,所以我得到了同样可预测的结果.或者即使它导致问题或S3.我注意到在爱尔兰有一个不同的命名桶的政策,不同的本地人有自己的api版本吗?
谢谢,
史蒂夫
最近在过滤器中发现了一些奇特的东西,我无法相信它的预期行为.
from django.contrib.auth.models import User
print User.objects.filter(id__in=User.objects.none().values_list("id",flat=True))
print User.objects.filter(id__in=User.objects.all().values_list("id",flat=True))
Run Code Online (Sandbox Code Playgroud)
奇怪的是,这两个列表都返回了完整的用户集.如果我将内部查询包装在列表函数中,实际上似乎很容易"修复"
User.objects.filter(id__in=list(User.objects.none().values_list("id")))
Run Code Online (Sandbox Code Playgroud)
然后这会返回我期望的结果(空列表).
对我来说似乎是个错误,或者我错过了什么?
史蒂夫
找到了这个问题的几个版本,例如Django 从 apache 获取环境变量,但是到目前为止我发现的建议似乎不适用于最新的 LTS django (1.11)。
我有一个 apache 配置,其中包含许多环境变量,不限于数据库的连接凭据。我用它来使我的代码在开发/产品等之间可移植。
我的 apache conf 只是使用 SetEnv 传入一些变量。
我尝试了两种不同风格的方法来使用这些变量,两者似乎都遇到相同的问题;在我们写入环境之前,它需要读取设置文件,并且设置文件需要来自环境的值。
我的两个变体是;
import os
import django
from django.core.handlers.wsgi import WSGIHandler
from django.core.wsgi import get_wsgi_application
_application = get_wsgi_application()
def application(environ, start_response):
for key in [keys...]:
if environ.get(key):
os.environ[key] = environ.get(key)
return _application(environ, start_response)
Run Code Online (Sandbox Code Playgroud)
和
import os
import django
from django.core.handlers.wsgi import WSGIHandler
class WSGIEnvironment(WSGIHandler):
def __call__(self, environ, start_response):
for key in [keys...]:
if environ.has_key(key):
print "Key: %s = %s" % (key,environ[key])
os.environ[key] = …Run Code Online (Sandbox Code Playgroud)