Библиотека Django GeoIP2 libmaxmind c в контейнере docker
Я использую GeoIP2 в Django-приложении с докером и хочу улучшить производительность поиска IP-адресов. В документации Django говорится:
Дополнительно рекомендуется установить библиотеку Си libmaxminddb, чтобы geoip2 мог использовать более высокую скорость работы библиотеки C.
Может кто-нибудь предоставить рабочий пример того, как это сделать в контейнере docker? Я использую шаблон Django Cookiecutter, который использует docker-compose и образ python в Django Dockerfile:
ARG PYTHON_VERSION=3.9-slim-bullseye
FROM python:${PYTHON_VERSION} as python
FROM python as python-build-stage ARG BUILD_ENVIRONMENT=local
В настоящее время я использую GeoIP2 таким образом в файле views.py, и он работает не очень хорошо:
from django.contrib.gis.geoip2 import GeoIP2
from ipware import get_client_ip
class CheckInView(View):
def get(self, request, pk):
if client_ip and is_routable:
client_ip, is_routable = get_client_ip(request)
g = GeoIP2()
city_dict = g.city(checkin.ip)
checkin.city = city_dict['city']
checkin.post_code = city_dict['postal_code']
checkin.region = city_dict['region']
checkin.country_code = city_dict['country_code']
checkin.country_name = city_dict['country_name']
lat_lon = g.lat_lon(client_ip)
checkin.lat = lat_lon[0]
checkin.lon = lat_lon[1]
...
return HttpResponseRedirect(...)
Я прошу рабочий пример, потому что я многого не знаю: не знаком с компиляцией материала на c, не знаком с тем, как использовать c из python, и определенно не знаком с тем, как делать эти вещи внутри контейнера docker.