2

Heroku で Django + Celery を実行しています。バックグラウンドで Celery タスク (Heroku ワーカー) でファイルを作成し、次の方法を使用して S3 に画像をアップロードします。

def uploadToS3(img, out):    
    out_im  = cStringIO.StringIO()
    img.save(out_im, 'gif') 
    conn = boto.connect_s3()   
    b = conn.get_bucket('mybucket')   
    k = b.new_key(out)   
    k.set_contents_from_string(out_im.getvalue(),{'Content-Type': 'image/gif'})
    k.set_acl('public-read')
    #test
    imageExists = default_storage.exists(out)

    if imageExists:
        print out +  " exists." 
    else:
        print out +  " does not exists."

それは完全に機能します。画像は実際に作成されます。

問題は、ファイルが作成され、S3 Web コンソールおよびブラウザー (そこにあります...) を介して表示された後、同じテストを実行することです。

    imageExists = default_storage.exists(my_image_path_at_s3)

他のプロセス (Django アプリ) で - false を返します。

Djangoアプリを再起動するだけで、s3で新しいファイルが認識されました。

キャッシュのようですが、どこにあるのかわかりませんでした...

ヒントはありますか?

4

0 に答える 0