Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么AmazonS3签名URL可以在本地工作,但不能在生产服务器上工作?_Python_Django_Boto - Fatal编程技术网

Python 为什么AmazonS3签名URL可以在本地工作,但不能在生产服务器上工作?

Python 为什么AmazonS3签名URL可以在本地工作,但不能在生产服务器上工作?,python,django,boto,Python,Django,Boto,我想知道是什么原因导致这个签名URL方法在本地工作,而不是在真正的服务器上工作 在本地,它生成一个在12秒内过期的URL,但在服务器上它返回一个过期的URL def s3_signed_url(file_path): import boto s3conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) bucket = s3conn.get_bucket(BUCKET_NAME, validate=F

我想知道是什么原因导致这个签名URL方法在本地工作,而不是在真正的服务器上工作

在本地,它生成一个在12秒内过期的URL,但在服务器上它返回一个过期的URL

def s3_signed_url(file_path):
    import boto
    s3conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
    bucket = s3conn.get_bucket(BUCKET_NAME, validate=False)
    key = bucket.new_key(file_path)
    signed_url = key.generate_url(expires_in=12)
    return signed_url



@never_cache
def enjoy_the_show(request, movie_id):
    m = get_object_or_404(Movie, pk=movie_id)
    iOS = is_ios_device(request)
    if (iOS is True):
        movie_path = m.m3u8_url
        movie_path = movie_path.replace('https://s3.amazonaws.com/domain.com','')
        signed_url = s3_signed_url(movie_path)
        return render_to_response('movies/enjoy_show_iOS.html', {'signed_url':signed_url,'movie': m,'is_logged_in':is_logged_in(request)},context_instance=RequestContext(request))
    else:
        return render_to_response('movies/enjoy_show.html', {'movie': m,'is_logged_in':is_logged_in(request)},context_instance=RequestContext(request))

问题解决了。这是一个时区问题。
通过在两台服务器上正确配置时区和/或考虑时差,可以解决此问题。

谢谢!该问题与提及boto的时区和服务器时钟+1有关