我在 django 应用程序中使用 paramiko 将上传的文件移动到单独的资产服务器。这一切都可以正常工作一段时间(几个小时左右?),但随后它开始在 sftp.open 调用上产生 EOFErrors。以下是生成的 2 个回溯:
storages/backends/sftpstorage.py in _read
return self.sftp.open(remote_path, 'rb')
paramiko/sftp_client.py in open
t, msg = self._request(CMD_OPEN, filename, imode, attrblock)
paramiko/sftp_client.py in _request
num = self._async_request(type(None), t, *arg)
paramiko/sftp_client.py in _async_request
self._lock.release()
paramiko/sftp.py in _send_packet
self._write_all(out)
paramiko/sftp.py in _write_all
raise EOFError()
和:
django/db/models/fields/files.py in save
self.name = self.storage.save(name, content)
django/core/files/storage.py in save
name = self.get_available_name(name)
django/core/files/storage.py in get_available_name
while self.exists(name):
generic/storage.py in exists
raise
storages/backends/sftpstorage.py in exists
return False
paramiko/sftp_client.py in stat
t, msg = self._request(CMD_STAT, path)
paramiko/sftp_client.py in _request
num = self._async_request(type(None), t, *arg)
paramiko/sftp_client.py in _async_request
self._lock.release()
paramiko/sftp.py in _send_packet
self._write_all(out)
paramiko/sftp.py in _write_all
raise EOFError()
因此,在替换照片以及仅保存项目时都会发生这种情况,而照片保持不变。exists
这是由于拨打电话的事实。
此外,我使用 django-imagekit 进行图像缩放,并使用 django-storages 的 sftpstorage 将文件存储在远程机器上。
奇怪的是,这可以正常工作一段时间,但随后停止工作。通过触摸 wsgi 文件重新启动 mod_wsgi 使其再次工作。这可能是什么原因?可能是一些 ssh 会话重用不起作用吗?