0

Gunicorn を使用する Google Cloud Run に Python アプリケーションをデプロイしています。gunicorn とクラウド実行のタイムアウトは両方とも 900 秒に設定されています。これは Cloud Run のタイムアウトでもあります。奇妙なことに、この関数を呼び出すと、Cloud Run から 502 エラーが発生します。アプリケーションの実行時間が 60 秒未満の場合ではなく、60 秒を超える場合です。たとえば、以下のデプロイされた関数はこのエラーをスローしました。

def process_file(request=request):
    time.sleep(61)
    ...
    return handle_response()      

ただし、スリープを 40 秒に変更すると、次のようになります。

def process_file(request=request):
    time.sleep(40)
    ...
    return handle_response() 

502 エラーはありませんでした。当初はデフォルトタイムアウトが60秒のnginxが原因かと思っていましたが、デフォルトでdockerやcloud runでnginxがデプロイされているようには見えず、これが原因ではないようです。私の Dockerfile は以下のとおりです。

FROM continuumio/miniconda3

# Install production dependencies.
RUN conda install numpy==1.17.2
RUN conda install xlsxwriter==1.1.2
RUN conda install pandas==0.25.1
RUN conda install -c conda-forge ciso8601
RUN pip install gunicorn flask gevent flask_mail flask-cors pyjwt firebase_admin networkx datefinder google-cloud-pubsub 

# Copy local code to the container image.
COPY app.py .
RUN mkdir backend/
COPY backend/ /backend/

# Service must listen to $PORT environment variable.
# This default value facilitates local development.
ENV PORT 8080

# Run the web service on container startup. Here we use the gunicorn
# webserver, with one worker process and 8 threads.
# For environments with multiple CPU cores, increase the number of workers
# to be equal to the cores available.
CMD exec gunicorn --bind 0.0.0.0:$PORT --workers 1 app:app --timeout 900 --log-level debug

フロントエンドで使用してクラウド実行を呼び出していますaxiosが、私の理解ではタイムアウトがないため、これが問題になるとは思いません。どんな助けでも大歓迎です、ありがとう!

編集:これはクロムコンソールのエラーメッセージの画像です-あまり役に立たないようです:

ここに画像の説明を入力

4

2 に答える 2