Уведомления

Группа в Telegram: @pythonsu

#1 Май 20, 2010 18:42:25

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Python data in bash variables

Пространства для Вашего Я, коллеги!

У нас тут проект на джанге и мне нужно организовать с ним такие чисто системные действия, как деплой, бекап, старт-стоп, мониторинг… Одним словом – чисто системные вещи, которые проще писать на баше, чем на питоне.
Так как мне для этого нужны некоторые значения из конфига проекта, я написал такой скрипт:

#!/usr/bin/env python2.6
# coding: utf-8

u"""Вытягиваем из конфига значение интересующей нас переменной"""

import sys
import os

sys.path.insert(0, os.path.dirname(os.path.abspath(os.path.dirname(__file__))))

import config

USAGE = """get_config_value.py [attr]"""

if __name__=="__main__":

if len(sys.argv) == 1:
for key in sorted(k for k in dir(config) if not k.startswith('__')):
print key

elif len(sys.argv) == 2:
try:
sys.stdout.write(str(getattr(config, sys.argv[1])) + '\n')
except AttributeError:
sys.stderr.write("Attribute is not exists.\n")
sys.exit(1)

elif len(sys.argv) > 2:
sys.stderr.write(USAGE)
sys.exit(1)

sys.exit(0)
Он работает нормально и правльно, но мне бы хотелось получить все эти переменные в окружении баша. Т.е. баш умеет так:
. script_with_environ.bash
Фактически это что-то вроде include в Си…

А вот как мне сделать такое с питоним скриптом?
Я пробовал править из скрипта os.environ и вызывать его из баша, но это ни к чему не привело.

P.S. Linux.



Офлайн

#2 Май 21, 2010 06:02:01

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Python data in bash variables

ZZZ
А вот как мне сделать такое с питоним скриптом?
Я пробовал править из скрипта os.environ и вызывать его из баша, но это ни к чему не привело.
И не должно было, порождаемый процесс копирует окружение из запускающего и установка в нем переменных на родительский не влияет.
Может сформировать временный файлик с параметрами, а из баша его читать и устанавливать?

А почему все же не пойти стандартным для джанги путем - написать свои команды?



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#3 Май 21, 2010 08:43:43

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Python data in bash variables

PooH
не должно было, порождаемый процесс копирует окружение из запускающего и установка в нем переменных на родительский не влияет.
Я понимаю, но надежда, как говориться, умирает последней…

PooH
Может сформировать временный файлик с параметрами, а из баша его читать и устанавливать?
Из-за надобности специфичного экранирования, это довольно не тривиальная задача.

PooH
А почему все же не пойти стандартным для джанги путем - написать свои команды?
Я очень плохо знаю джангу. Ссылку не дашь?



Офлайн

#4 Май 21, 2010 09:26:36

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Python data in bash variables

Вот http://docs.djangoproject.com/en/1.2/howto/custom-management-commands/
А вот этот проект предлагает дополнительный набор команд http://code.google.com/p/django-command-extensions/



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#5 Май 21, 2010 10:45:10

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Python data in bash variables

Ааа!.. Вот ты о чём!
Наверное бОльшую часть можно красиво на это положить… Например генерилку внешних конфигов (nginx, logrotate…). Спасибо за мысль.

Но всё равно основной вопрос остаётся, хотя и превратившись в академический.



Офлайн

#6 Май 21, 2010 16:58:58

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

Python data in bash variables

А может buildout + djangorecipe? Пользуюсь им и очень доволен, деплой в пару консольных команд происходит.



Офлайн

#7 Май 21, 2010 17:57:34

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Python data in bash variables

А вызывать bash скрипт из питонового с предварительной установкой переменных окружения не проще?



Офлайн

#8 Май 22, 2010 00:54:44

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Python data in bash variables

poltergeist
А может buildout + djangorecipe? Пользуюсь им и очень доволен, деплой в пару консольных команд происходит.
Слишком много всего. Начиная от DB (одним syncdb не отделаешься) и заканчивая генерацией конфига sphinxsearch… Я уж молчу про virtualenv, который сам по себе не часто с первого раза собирается… Но это и не так важно – у нас не тысяча мелких проектиков, а пара больших.

Ed
А вызывать bash скрипт из питонового с предварительной установкой переменных окружения не проще?
Я думал об этом. Не красиво.

Что касается команд для manage.py, то не всё можно туда повесить. Некоторые вещи должны работать до сборки virtualenv, т.е. без джанги и питона вообще. Хотя, как я сказал, многое я туда повесил. Это хорошо.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version