Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

299
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!