Я создал приложение с 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()