Библиотека 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.

Вернуться на верх