Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

294
Vistas
No se puede leer el archivo pickle en la aplicación Cloud Run. TypeError: __cinit__() toma al menos 2 argumentos posicionales

Tengo una aplicación de API rápida que implementé en GCP Cloud Run. Ha estado funcionando bien hasta ayer y realmente no sé qué salió mal. El problema parece comenzar en esta línea cuando leo en un archivo .pkl

model = pickle.load(open(os.path.join('models', 'appartementen.pkl'), 'rb'))

El rastreo:

 File "pandas/_libs/internals.pyx", line 572, in pandas._libs.internals.BlockManager.__cinit__: TypeError: __cinit__() takes at least 2 positional arguments (0 given) at <module> (/app/src/api/util.py:25) at <module> (/app/src/api/main.py:8) at _call_with_frames_removed (<frozen importlib._bootstrap>:219) at exec_module (<frozen importlib._bootstrap_external>:728) at _load_unlocked (<frozen importlib._bootstrap>:677) at _find_and_load_unlocked (<frozen importlib._bootstrap>:967) at _find_and_load (<frozen importlib._bootstrap>:983) at _gcd_import (<frozen importlib._bootstrap>:1006) at import_module (/usr/local/lib/python3.7/importlib/__init__.py:127) at import_app (/usr/local/lib/python3.7/site-packages/gunicorn/util.py:358) at load_wsgiapp (/usr/local/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py:39) at load (/usr/local/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py:49) at wsgi (/usr/local/lib/python3.7/site-packages/gunicorn/app/base.py:67) at load_wsgi (/usr/local/lib/python3.7/site-packages/gunicorn/workers/base.py:144) at init_process (/usr/local/lib/python3.7/site-packages/gunicorn/workers/base.py:119) at spawn_worker (/usr/local/lib/python3.7/site-packages/gunicorn/arbiter.py:583)

Tenga en cuenta que cuando implementé esta aplicación localmente, todo salió bien.

Mi Dockerfile:

 FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7 WORKDIR /app COPY . ./ COPY src ./src/ COPY models ./models/ RUN pip install -r requirements.txt COPY setup.py ./ CMD exec gunicorn src.api.main:app

Cómo implemento en Cloud Run:

 gcloud builds submit --tag gcr.io/project-id/api --timeout=3600 gcloud run deploy api --image gcr.io/project-id/api --platform managed --project=project-id --region=europe-west4

requirements.txt :

 fastapi==0.63.0 google-cloud-bigquery[bqstorage,pandas]==1.24.0 sentry_sdk==1.0.0 xgboost==1.3.3 scikit-learn==0.23.1 shap==0.39.0 matplotlib==3.4.1

Intenté usar la misma versión de scikit-learn acuerdo con esta sugerencia , pero el problema persiste.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Acabo de encontrarme con este mismo problema al construir un nuevo contenedor hoy. No estoy seguro de la causa exacta en este momento (probablemente una incompatibilidad entre la versión de pandas del objeto en escabeche y la versión de pandas del contenedor), pero me funcionó revertir la versión de pandas . El pickle se construyó con 1.2.5 y el contenedor se instaló 1.3.0 . Entonces:

 pip uninstall pandas pip install pandas==1.2.5
over 4 years ago · Santiago Trujillo Denunciar

0

Este fue un error con pandas 1.3.0 y se solucionó con pandas 1.3.1 .

Como solución temporal, reemplace pickle.load con pandas.read_pickle .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda