Рекомендации по интеграции файла настроек для инициализации собственного пакета python? - PullRequest
0 голосов
/ 31 марта 2020

Я создал собственный пакет python (назовем его OwnRep), в котором мне нужно использовать параметры конфигурации, такие как адрес доступа к базе данных, учетные данные и т. Д. c.

Я хочу использовать собственный пакет в других проектах. Теперь, чего я хочу избежать, так это того, что мои учетные данные жестко закодированы в OwnRep. Поэтому я начал задумываться об инициализации моего пакета OwnRep с какими-то настройками, подобными Django и SciPy, чтобы настройки пакета устанавливались динамически. .

Есть предложения по решению этой проблемы? Концептуальная картинка прилагается в виде ссылки введите описание изображения здесь

Ответы [ 2 ]

1 голос
/ 31 марта 2020

Положите учетные данные в вашей среде. Это безопаснее. Затем создайте файл с именем settings.py или что угодно, и сделайте что-то вроде этого:

DATABASES = {
    'default': {
        'ENGINE': 'your_engine',
        'USER': os.environ.get('DB_USER'),
        'PASSWORD': os.environ.get('DB_PASSWORD'),
        'HOST': '127.0.0.1',
        'PORT': '5432',
        'NAME': os.environ.get('DB_NAME'),
    }
}
0 голосов
/ 31 марта 2020

Для этого вам необходимо убедиться, что все необходимые учетные данные (api_key, username, password) указаны при создании вашего собственного пакета. Это может быть сделано путем передачи фактической информации в ваш собственный пакет или чтения из переменной окружения.

Давайте рассмотрим несколько примеров из реального мира:

  1. Sendgrid:
import sendgrid
import os
from sendgrid.helpers.mail import *

sg = sendgrid.SendGridAPIClient(api_key=os.environ.get('SENDGRID_API_KEY'))
from_email = Email("test@example.com")
to_email = To("test@example.com")
subject = "Sending with SendGrid is Fun"
content = Content("text/plain", "and easy to do anywhere, even with Python")
mail = Mail(from_email, to_email, subject, content)
response = sg.client.mail.send.post(request_body=mail.get())

В приведенном выше фрагменте, чтобы мы могли получить доступ к sendgrid API, нам нужно предоставить api_key. Ключ api_key можно получить из переменной окружения, называемой SENDGRID_API_KEY, хотя реализация также делает то же самое. пожалуйста, проверьте https://github.com/sendgrid/sendgrid-python/blob/master/sendgrid/sendgrid.py для более подробной информации о реализации.

Oy-Client (Python пакет, который я создал):
from oy import build_client
oy_client = build_client("https://sandbox.oyindonesia.com/staging/partner", "username", "api-key")
oy_client.get_balance()

В приведенном выше фрагменте, чтобы мы могли получить доступ к API, нам необходимо предоставить base_url (где была точка it) и api_key.

В обоих примерах мы можем добиться переносимости и безопасности для нашего собственного кода в соответствии с https://12factor.net/config. И нет необходимости жестко задавать конфигурацию / учетные данные в вашем собственном пакете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...