Может ли команда управления Django определить, когда сервер запущен?
У меня есть команда управления, которая выполняет некоторые манипуляции с базой данных, поэтому я не хочу, чтобы она выполнялась, пока сервер работает. Есть ли способ определить, запущен ли сервер, по команде управления
Нет, команда управления Django напрямую определяет, запущен ли сервер самостоятельно.
В командах управления Django нет встроенной поддержки этого, но вы всегда можете использовать ping
:
import os
from django.core.management.base import BaseCommand, CommandError
def host_is_up(host):
# mac OS/unix
command = f'ping -c 1 "{host}"'
# Windows
command = f'ping -n 1 "{host}"'
return os.system(command) == 0
class Command(BaseCommand):
def handle(self, *args, **options):
host = '192.168.x.x:8000'
if host_is_up(host):
raise CommandError(f'The host: {host} is running')
do_stuff()