fox_12
@fox_12
Расставляю биты, управляю заряженными частицами

Уникальный id запуска Django?

Такой вопрос - может кто сталкивался... Мне нужно на каждый запуск django-проекта создавать некий уникальный идентификатор старта проекта, доступный глобально для проекта, уникальный именно для данного события старта, и создавался он как можно на более раннем этапе, так как происходят некие инициализации, которые используют данный уникальный идентификатор, и был доступен весь период жизни проекта до перестарта/перезапуска. В процессе работы он должен быть неизменным.
Новый запуск/перезапуск проекта должен приводить к изменению данного идентификатора.
Пробовал что-то вроде:
thread_local_storage = threading.local()

...

global thread_local_storage

running_instance_uid = getattr(thread_local_storage, 'running_instance_uid', None)
if not running_instance_uid:
    thread_local_storage.running_instance_uid = str(uuid4())

Но не подошло - идентификатор меняется после старта.
Пока приходит в голову - просто создавать/изменять метку в файле перед запуском проекта на django, и ее читать.
Но может есть способ изящнее..
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ответы на вопрос 1
trapwalker
@trapwalker
Программист, энтузиаст
А где вы размещали этот код? Он выполняется дважды?
Ваш проект весь в одном процессе стартует? Может быть поднимается несколько инстансов джанги.
Если несколько инстансов, то такой идентификатор можно хранить только в БД, а перед стартом удалять его извне скриптом.
Можете совсем перед запуском проекта вписаь в БД внешним скриптом новый UID и его же сохранить в переменных среды окружения процессов всех инстансов. Кстати, в таком случае и в БД можно не хранить тот уид. Просто перед запуском в баш-скрипте всем процессам переавать его и все.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы