OSError: errno 99 не может назначить запрошенный адрес в контейнере docker с клиентом paramiko - PullRequest
0 голосов
/ 26 марта 2020

Я создал приложение с Django и написал команду, которая обрабатывает файлы Excel, генерируя файлы json, которые затем копируются на удаленный компьютер с помощью Paramiko. Когда я выполняю команду вручную, она отлично работает, однако, когда она запускается crontab, выдается исключение

OSError: errno 99 cannot  assign requested address

Я работаю с Azure виртуальными машинами. Приложение перемещает файлы с одной виртуальной машины на другую

#docker-compose.yml
version: '3.4'

services:
  web:
    container_name: subida-excel
    build:
      network: bridge
      context: .
    command: gunicorn -w 10 --timeout 86400 -b 0.0.0.0:8010 blacklist.wsgi
    entrypoint: ./entrypoint.sh
    volumes:
      - .:/code
      - ./.ssh:/root/.ssh
      - ./db:/code/db
      - json:/code/blacklist_app/uploaded_files/json:rw
      - excel:/code/blacklist_app/uploaded_files/excel:rw
    ports:
      - "8010:8010"
    networks:
      kong-net:
      excel-net:
        ipv4_address: 172.30.0.123
    environment:
      - ALLOWED_HOST=${HOSTS}
      - DEBUG=${DEBUG}
      - BASE_URL=${URLBASE}
      - REMOTE_USER=${REMOTE_USER}
      - REMOTE_IP=${REMOTE_IP}
      - REMOTE_COPY=${REMOTE_COPY}
      - REMOTE_UPLOAD_FOLDER=${REMOTE_UPLOAD_FOLDER}
      - REMOTE_PASSWORD=${REMOTE_PASSWORD}

networks:
  kong-net:
    external: true
  excel-net:
    driver: bridge
    ipam:
    config:
      - subnet: 172.30.0.0/16

volumes:
  db:
  json:
  excel:

У меня есть класс с именем Task с методом загрузки, который использует две импортированные переменные: data_connection и type_files. Это один

def upload(self, file):
    user = data_connection["user"]
    host = data_connection["host"]
    password = data_connection["password"]

    ssh = paramiko.SSHClient() 
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(host, username=user, password=password) 
    sftp = ssh.open_sftp() 
    sftp.put(file, '/home/dem/db.json') 
    sftp.close() 
    ssh.exec_command('mv /home/dem/db.json ' + type_files[self.tipo]["upload"])
    ssh.close()
...