我需要能够存储文件,然后访问它来执行芹菜任务。有没有一种方法,当我返回s3_file_path时,可以在临时文件位置下载并存储文件?我看到了key.get_contents_to_filename('some_name'),但实际上并没有达到我的目的。我将返回s3_file_path,然后在另一个函数中执行以celery任务伪代码注释的动作。我目前正在通过使用generate_url()创建过期的URL来对此进行修改,但这并不是我真正想要的。
conn = boto.connect_s3()
# TODO: add test to check for validate=False
bucket = conn.get_bucket(settings.S3_BACKUP_BUCKET, validate=False)
key = Key(bucket)
s3_file_path = os.path.join(
settings.ENVIRONMENT, location, destination_filename)
key.key = s3_file_path
key.set_contents_from_filename(source_filename)
# celery task code
# bucket.download(s3_file_path, tempfile_name)
# file_obj = open(tempfile_name, 'r')
# import_file(file_obj)
Run Code Online (Sandbox Code Playgroud) 我从django-rest-framework api调用中获得了以下项目:
services = "['service1', 'service2', 'service3']"
Run Code Online (Sandbox Code Playgroud)
我想要 services = ['service1', 'service2', 'service3']
在我的JavaScript中,我尝试了services = JSON.parse(services)
-什么也没做,也尝试了$.parseJSON(services)。
在我的序列化程序中,我尝试将设置服务设置为ListField,也尝试了JSONSerializerField()
class JSONSerializerField(serializers.Field):
# Adapted from http://stackoverflow.com/a/28200902
def to_internal_value(self, data):
return json.loads(data)
def to_representation(self, value):
return value
Run Code Online (Sandbox Code Playgroud) 我正在尝试在中间件中设置我的用户上下文,然后尝试检查用户是否在其他处理程序函数中具有权限。但是由于某种原因,当我尝试从上下文访问用户时,它返回为 nils。中间件代码似乎正在工作,当我传递有效的 jwt 令牌时,它显示用户正在中间件函数的上下文中设置。但是一旦我点击 getCurrentUser 函数,它就会说它为零。
代码如下:中间件
// Middleware wraps the request with auth middleware
func Middleware(path string, sc *cfg.Server, orm *orm.ORM) gin.HandlerFunc {
logger.Info("[Auth.Middleware] Applied to path: ", path)
return gin.HandlerFunc(func(c *gin.Context) {
t, err := ParseToken(c, sc)
if err != nil {
authError(c, err)
} else {
if claims, ok := t.Claims.(jwt.MapClaims); ok {
if claims["exp"] != nil {
issuer := claims["iss"].(string)
userid := claims["jti"].(string)
email := claims["email"].(string)
if claims["aud"] != nil {
audiences := claims["aud"].(interface{})
logger.Warnf("\n\naudiences: %s\n\n", …Run Code Online (Sandbox Code Playgroud)