170 похожих чатов

Https://Pastebin.Com/SG6JugK0 Что не так?

71 ответов

130 просмотров

не видит файла .env. он точно в одной папке с main.py?

Иван- Автор вопроса
Иван- Автор вопроса
Сергей
не видит файла .env. он точно в одной папке с main...

поднял выше, так же падает ошибка спасибо, ошибка была в том, что одно обязательное поле не указал)

Иван
поднял выше, так же падает ошибка спасибо, ошибка...

app/auth/config.py хотя может он в auth и должен лежать, надо проверить, с импортами и подобным всё путаюсь..

Стикер

Иван- Автор вопроса

а при чем тут глобалы?

Tishka17
А при чем тут папка с мейном?

увидел что он запускается оттуда же. всё-таки подтягиваемый .env должен быть на одном уровне с файлом который на него ссылается или с папкой откуда запускаем?

Сергей
ни то ни то?

https://t.me/advice17/37

Tishka17
Нет, с чего бы

должен быть в "рабочей директории"?

Tishka17
Скорее всего. Или выше

.env в корне должен быть

Tishka17
Скорее всего. Или выше

но разве то откуда запускаем uvicorn ... это не рабочая директория? (статьи надо перечитать правда)

Tishka17
В корне? Мммммм

Условно проект: 1. Project-main 1.1 app - здесь само приложение 1.2 Dockerfile 1.3 .env итд

Сергей
но разве то откуда запускаем uvicorn ... это не ра...

Я вообще не очень понял что у него где лежит

Arozzi
Условно проект: 1. Project-main 1.1 app - здесь са...

Все сложнее. Лучше всего вообще не юзать то .энв который юзает топикстартер

Сергей
но разве то откуда запускаем uvicorn ... это не ра...

Думаешь правильно писать какую-то логику в конфиг файле?, который должен только инициализировать типы и дальше передавать их уже в другие функции, модули

Arozzi
Думаешь правильно писать какую-то логику в конфиг ...

трудно сказать.. чтобы в env не писать "магические" числа типа 3600?

Сергей
но разве то откуда запускаем uvicorn ... это не ра...

в .env в каком формате записываешь данные, так? DB_HOST=localhost DB_PORT=5432 DB_USER=postgres DB_PASS=postgres

Сергей
да

У тебя файл с инициализатором переменных называется config.py?

Сергей
да, но это же ни на что не влияет

Поменяй здесь: config = AuthConfig() на settings = AuthConfig()

Arozzi
Какая IDE у тебя?

а, речь о переменной снизу. но тоже не должно влиять, где-то пропустил думаю что-то

Arozzi
Попробуй, скажешь, что в итоге будет

да 100% не влияет, дурацкий эксперимент. тем более у меня вообще вот так @lru_cache() def get_settings(): return Settings()

Tishka17
О боже. Чую tiangolo насрал

плохая практика? уже не помню если честно для чего так написал. вроде эффект ведь тот же что записать в переменную.. а какие минусы?

Сергей
плохая практика? уже не помню если честно для чего...

1. Странное. Вызывает вопросы 2. Замаскированный глобал, те же проблемы что у него

Сергей
плохая практика? уже не помню если честно для чего...

Попробуй из корня запустить проект uvicorn app.main:app

Tishka17
1. Странное. Вызывает вопросы 2. Замаскированный ...

да, наверное глобал в явном виде выглядит лучше. почему здесь так воюют с глобалами для констант я по-прежнему не понимаю..

Arozzi
Попробуй из корня запустить проект uvicorn app.mai...

да всё работает, ты где-то забыл переименовать думаю

Tishka17
Где константы?

ну эти сеттинги во время работы приложения ведь не меняются

Сергей
ну эти сеттинги во время работы приложения ведь не...

Не меняются. Но это не константы. Они не известны заранее, а определяются где-то в процессе работы, но один раз.

Tishka17
Не меняются. Но это не константы. Они не известны ...

во время запуска. ок прочитаю тогда чтобы предметнее спрашивать, на 1 взгляд правда не вижу чему это может повредить

Сергей
во время запуска. ок прочитаю тогда чтобы предметн...

Ну вот в тестах, например, ты можешь захотеть подменить

Сергей
точно не то что записано в энвах

Именно. Смотри, уже не константа :)

Tishka17
Именно. Смотри, уже не константа :)

нет, я наоборот говорю точно не захочу подменить там то что записано в энвах, двусмысленно написал

Сергей
нет, я наоборот говорю точно не захочу подменить т...

Точно захочешь. Я тебе отвечаю. Ты стопудово захочешь протестить как ведёт себя приложение с разными вариантами настроек

Tishka17
Точно захочешь. Я тебе отвечаю. Ты стопудово захоч...

Для этого делаешь несколько режимов: ["DEV", "TEST", "PROD"] Пример: class Settings(BaseSettings): MODE: Literal["DEV", "TEST", "PROD"] LOG_LEVEL: str DB_HOST: str DB_PORT: int DB_USER: str DB_PASS: str DB_NAME: str @property def DATABASE_URL(self): return f"postgresql+asyncpg://{self.DB_USER}:{self.DB_PASS}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}" TEST_DB_HOST: str TEST_DB_PORT: int TEST_DB_USER: str TEST_DB_PASS: str TEST_DB_NAME: str @property def TEST_DATABASE_URL(self): return f"postgresql+asyncpg://{self.TEST_DB_USER}:{self.TEST_DB_PASS}@{self.TEST_DB_HOST}:{self.TEST_DB_PORT}/{self.TEST_DB_NAME}" FRONTEND_URL: str SMTP_HOST: str SMTP_PORT: int SMTP_USER: str SMTP_PASS: str REDIS_HOST: str REDIS_PORT: int SENTRY_DSN: str SECRET_KEY: str ALGORITHM: str class Config: env_file = ".env" settings = Settings() в .env соответсвенно тоже все прописываешь: MODE=DEV LOG_LEVEL=INFO DB_HOST=localhost DB_PORT=5432 DB_USER=postgres DB_PASS=postgres DB_NAME=crm_db TEST_DB_HOST=localhost TEST_DB_PORT=5432 TEST_DB_USER=postgres TEST_DB_PASS=postgres TEST_DB_NAME=test_first_crm

Пиздец.

И что делать с этим TEST_DA6ABASE_URL, если код везде обращается к database_url?

Tishka17
И что делать с этим TEST_DA6ABASE_URL, если код ве...

в файле подключения БД: if settings.MODE == "TEST": DATABASE_URL = settings.TEST_DATABASE_URL DATABASE_PARAMETERS = {"poolclass": NullPool} else: DATABASE_URL = settings.DATABASE_URL DATABASE_PARAMETERS = {} engine = create_async_engine(DATABASE_URL, **DATABASE_PARAMETERS) async_session_maker = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False)

Arozzi
в файле подключения БД: if settings.MODE == "TEST"...

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

Arozzi
Для этого делаешь несколько режимов: ["DEV", "TEST...

а смпт не тестируете? надо добавить TEST_SMPT_HOST, TEST_SMPT_PORT, TEST_SMPT_USER и TEST_SMPT_PASS еще аналогично с редисом

Arozzi
в файле подключения БД: if settings.MODE == "TEST"...

Мммм. А если у меня тестов 1000 штук, мне делать 1000 доп параметров конфига и все в одном файле?

Jabtanrem Hor
а смпт не тестируете? надо добавить TEST_SMPT_HOS...

А ещё надо разные комбинации проверить

Jabtanrem Hor
а смпт не тестируете? надо добавить TEST_SMPT_HOS...

Это пример, при желании можно все тестами покрыть

Tishka17
А ещё надо разные комбинации проверить

Суть в том, на какой БД ты это будешь тестировать, юнит и интеграционные

Arozzi
Это пример, при желании можно все тестами покрыть

Представь, что у тебя в конфиге 10 булевых параметров. Ты хочешь протестить все комбинации. Как делать будешь?

Arozzi
Суть в том, на какой БД ты это будешь тестировать,...

Ни на какой. Для юниттестов мне НЕ нужна БД.

Tishka17
Пиздец.

в чем именно? вроде много где слышал про dev/prod режимы..

Сергей
в чем именно? вроде много где слышал про dev/prod ...

Это сколько угодно. Но вот в дев режиме тебе нахуй не нужен адрес продововй базы и наоборот

Сергей
в чем именно? вроде много где слышал про dev/prod ...

тк на проде у тебя просто продовский бд урл, а дев собсна девелоперский бд урл и все

Сергей
точно, два разных файла

без файлов, просто переменные окружения

Сергей
точно, два разных файла

Один файл. Один в проде, второй на компе. Они никогда не существуют вместе

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
14
Не ну фпц - это уже просто троллинг какой-то. Элементарный код нельзя собрать. ЧЯДНТ? program Project1; {$mode delphi} uses SysUtils, Classes, Generics.Collections; var...
Peter
4
а где есть mysql cloud кроме яндекс-клауд?
Oleg Nosov
13
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
А кто-нибудь запихивал сборку перловых модулей/образов с perl приложениями в окружения без интернета (в специализированном CI/CD)? У меня сейчас есть ряд cpanfile, которые н...
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
14
Карта сайта