Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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
带有Django存储和S3的collectstatic上的MemcachedError_Django_Heroku_Amazon S3_Django Storage_Libmemcached - Fatal编程技术网

带有Django存储和S3的collectstatic上的MemcachedError

带有Django存储和S3的collectstatic上的MemcachedError,django,heroku,amazon-s3,django-storage,libmemcached,Django,Heroku,Amazon S3,Django Storage,Libmemcached,我在Heroku上部署了一个简单的Django应用程序。当我运行collectstatic将静态文件上载到S3时,出现以下错误: 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/m

我在Heroku上部署了一个简单的Django应用程序。当我运行
collectstatic
将静态文件上载到S3时,出现以下错误:

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 回溯(最近一次呼叫最后一次): 文件“appname/manage.py”,第11行,在 从命令行(sys.argv)执行命令 文件“/app/.heroku/python/lib/python2.7/site packages/django/core/management/\uu init\uu.py”,第399行,从命令行执行 utility.execute() 文件“/app/.heroku/python/lib/python2.7/site packages/django/core/management/_init__.py”,第392行,在execute中 self.fetch_命令(子命令)。从_argv(self.argv)运行_ 文件“/app/.heroku/python/lib/python2.7/site packages/django/core/management/base.py”,第242行,在运行时从 self.execute(*args,**选项._dict__; 文件“/app/.heroku/python/lib/python2.7/site packages/django/core/management/base.py”,执行中第285行 输出=self.handle(*args,**选项) handle中的文件“/app/.heroku/python/lib/python2.7/site packages/django/core/management/base.py”,第415行 返回self.handle\u noargs(**选项) 文件“/app/.heroku/python/lib/python2.7/site packages/collectfast/management/commands/collectstatic.py”,第135行,在handle_noargs中 collected=self.collect() collect中的文件“/app/.heroku/python/lib/python2.7/site packages/collectfast/management/commands/collectstatic.py”,第33行 ret=super(命令,self).collect(*args,**kwargs) 文件“/app/.heroku/python/lib/python2.7/site packages/django/contrib/staticfiles/management/commands/collectstatic.py”,第111行,在collect中 处理程序(路径、前缀路径、存储) 文件“/app/.heroku/python/lib/python2.7/site packages/collectfast/management/commands/collectstatic.py”,第92行,在copy_文件中 self.destroy_查找(前缀为_路径) 文件“/app/.heroku/python/lib/python2.7/site packages/collectfast/management/commands/collectstatic.py”,第61行,在销毁查找中 cache.delete(self.get_cache_key(path)) 文件“/app/.heroku/python/lib/python2.7/site packages/django/core/cache/backends/memcached.py”,删除中第86行 self.\u cache.delete(键) _pylibmc.MemcachedError:memcached_delete(:1:collectfast_asset_dc44a7965f7)中的错误47:服务器已失败并在定时重试之前被禁用,主机:127.0.0.1:11211->libmemcached/connect.cc:592 heroku上设置了以下环境变量:

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: BUILDPACK\u URL: 数据库URL: DJANGO\u AWS\u访问\u密钥\u ID: DJANGO_AWS_机密_访问_密钥: DJANGO_AWS_存储_桶_名称: DJANGO_配置: DJANGO_密钥: HEROKU_POSTGRESQL_CRIMSON_URL: MEMCACHIER_密码: MEMCACHIER_服务器: MEMCACHIER_用户名: PGU URL: SENDGRID\u密码: SENDGRID\u用户名: 我已经为此挣扎了几天。昨天,我意识到其中一个env变量有一个拼写错误的副本。删除拼写错误的env变量后,
collectstatic
命令工作正常,文件被上传到S3。现在我正在使用另一个应用程序,无法使其工作


已存在同名的空S3存储桶。我尝试了用户特定和帐户范围的AWS凭据,但都没有成功。

我遇到了同样的问题。我已经回答了有关问题

为了完整起见,以下是解决方案:

首先将django pylibmc sasl==0.2.4添加到requirements.txt

然后在settings.py中,将文件末尾的“缓存”部分替换为:

########## 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上正常工作了