1

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セッションの再利用でしょうか?

4

0 に答える 0