2014-02-27 4 views
2

나는 Heroku에서 기본 뼈대 장고 응용 프로그램을 배포했습니다. 내가 S3에 정적 파일을 업로드 할 수 collectstatic을 실행하면, 나는 다음과 같은 오류를 얻을 : 나는 몇이 고민 한Django Storage 및 S3와 함께 collectstatic에 대한 MemcachedError

 
BUILDPACK_URL: 
DATABASE_URL: 
DJANGO_AWS_ACCESS_KEY_ID: 
DJANGO_AWS_SECRET_ACCESS_KEY: 
DJANGO_AWS_STORAGE_BUCKET_NAME: 
DJANGO_CONFIGURATION: 
DJANGO_SECRET_KEY: 
HEROKU_POSTGRESQL_CRIMSON_URL: 
MEMCACHIER_PASSWORD: 
MEMCACHIER_SERVERS: 
MEMCACHIER_USERNAME: 
PGBACKUPS_URL: 
SENDGRID_PASSWORD: 
SENDGRID_USERNAME: 

:

 
Traceback (most recent call last): 
    File "appname/manage.py", line 11, in 
    execute_from_command_line(sys.argv) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line 
    utility.execute() 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/base.py", line 242, in run_from_argv 
    self.execute(*args, **options.__dict__) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/base.py", line 285, in execute 
    output = self.handle(*args, **options) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/base.py", line 415, in handle 
    return self.handle_noargs(**options) 
    File "/app/.heroku/python/lib/python2.7/site-packages/collectfast/management/commands/collectstatic.py", line 135, in handle_noargs 
    collected = self.collect() 
    File "/app/.heroku/python/lib/python2.7/site-packages/collectfast/management/commands/collectstatic.py", line 33, in collect 
    ret = super(Command, self).collect(*args, **kwargs) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 111, in collect 
    handler(path, prefixed_path, storage) 
    File "/app/.heroku/python/lib/python2.7/site-packages/collectfast/management/commands/collectstatic.py", line 92, in copy_file 
    self.destroy_lookup(prefixed_path) 
    File "/app/.heroku/python/lib/python2.7/site-packages/collectfast/management/commands/collectstatic.py", line 61, in destroy_lookup 
    cache.delete(self.get_cache_key(path)) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/core/cache/backends/memcached.py", line 86, in delete 
    self._cache.delete(key) 
_pylibmc.MemcachedError: error 47 from memcached_delete(:1:collectfast_asset_dc44a7965f7): SERVER HAS FAILED AND IS DISABLED UNTIL TIMED RETRY, host: 127.0.0.1:11211 -> libmemcached/connect.cc:592 

다음 ENV 변수는 Heroku가 설정된다 일. 어제, env 변수 중 하나에 철자 오류가 있음을 알았습니다. 맞춤법이 틀린 env 변수를 삭제 한 후 collectstatic 명령이 완벽하게 작동하고 파일이 S3에 업로드되었습니다. 이제 다른 앱으로 작업 중이며 제대로 작동하지 않습니다.

같은 이름의 빈 S3 버킷이 이미 있습니다. 사용자 별 AWS 자격 증명과 계정 AWS 자격 증명을 모두 시도했지만 어느 것도 효과가 없습니다.

답변

0

나는 동일한 문제가있었습니다. 관련 GitHub issue에 대해 답변했습니다.

먼저 requirements.txt하는 django-pylibmc-sasl==0.2.4을 추가 완성도를 들어

여기에 솔루션입니다.

그런 다음 settings.py에있는 파일의 끝 부분에 "CACHING"절을 대체 :

########## CACHING 

os.environ['MEMCACHE_SERVERS'] = os.environ.get('MEMCACHIER_SERVERS', '') 
os.environ['MEMCACHE_USERNAME'] = os.environ.get('MEMCACHIER_USERNAME', '') 
os.environ['MEMCACHE_PASSWORD'] = os.environ.get('MEMCACHIER_PASSWORD', '') 

CACHES = { 
    'default': { 
    'BACKEND': 'django_pylibmc.memcached.PyLibMCCache', 
    'LOCATION': os.environ.get('MEMCACHIER_SERVERS', ''), 
    'TIMEOUT': 500, 
    'BINARY': True, 
    'OPTIONS': { 'tcp_nodelay': True } 
    } 
} 

########## END CACHING 

그것은 지금 Heroku가에서 잘 작동합니다.