Недостаток поддержки пользовательских тайм-аутов на уровне запросов всегда был недостатком HttpClient
в моем сознании. Если вы не возражаете против небольшой зависимости от библиотеки, Flurl.Http [отказ от ответственности: я автор] поддерживает это напрямую:
"http://api.com/endpoint".WithTimeout(30).GetJsonAsync();
Это истинный запрос, настройка уровня; все вызовы одного и того же хоста используют общий экземпляр HttpClient
под капотом, а одновременные вызовы с разными тайм-аутами не конфликтуют. Существует настраиваемое глобальное значение по умолчанию (сначала 100 секунд, так же как HttpClient
).
Можно создать динамический импорт для сбора всех Шаблонов URL из каждого приложения в проекте с простым методом как так:
def get_url_patterns():
from django.apps import apps
list_of_all_url_patterns = list()
for name, app in apps.app_configs.items():
# you have a directory structure where you should be able to build the correct path
# my example shows that apps.[app_name].urls is where to look
mod_to_import = f'apps.{name}.urls'
try:
urls = getattr(importlib.import_module(mod_to_import), "urlpatterns")
list_of_all_url_patterns.extend(urls)
except ImportError as ex:
# is an app without urls
pass
return list_of_all_url_patterns
list_of_all_url_patterns = get_url_patterns()
я недавно использовал что-то вроде этого для создания тега шаблона для показа активных навигационных ссылок.
from django.urls.resolvers import RegexPattern,RoutePattern
from your_main_app import urls
def get_urls():
url_list = []
for url in urls.urlpatterns:
url_list.append(url.pattern._regex) if isinstance(url.pattern, RegexPattern) else url_list.append(url.pattern._route)
return url_list
Здесь your_main_app
название приложения, куда Ваш settings.py файл помещается
Попробуйте следующее:
from django.urls import get_resolver
get_resolver().reverse_dict.keys()
Или, если вы все еще используете Django 1. *:
from django.core.urlresolvers import get_resolver
get_resolver(None).reverse_dict.keys()
Я использую плагин: https://github.com/django-extensions/django-extensions , в нем есть команда show_urls, которая может помочь.