У меня есть приложение на основе Python 3.7.2 asyncio. Существует конечная точка, предоставляющая некоторую информацию о потоке:
threads_info = {}
for thread in enumerate():
threads_info[thread.__str__()] = traceback.format_stack(sys._current_frames()[thread.ident])
Насколько я знаю, не должно быть никаких потоков, кроме основного потока, однако, когда я запрашиваю конечную точку, я вижу этот странный ThreadPoolExecutor. Он начинается только с одного работника и продолжает увеличиваться:
Есть идеи, почему, как и что это за ThreadPoolExecutor? Возможно, есть какой-то способ узнать, где в коде он создан или какой пакет его создает?
Dockerfile, который я использую для запуска своего приложения:
FROM python:3.7.2-alpine as base
FROM base as builder
RUN mkdir /install
WORKDIR /install
COPY requirements /requirements
RUN apk add \
"gcc>8.2.0" \
"g++>8.2.0" \
"libffi-dev>3.2.1" \
"musl-dev>1.1.20"
RUN pip install --install-option="--prefix=/install" -r /requirements
FROM base
RUN apk add --no-cache procps
COPY --from=builder /install /usr/local
COPY src /app
WORKDIR /app
RUN mkdir logs
ENTRYPOINT ["python", "-u", "app.py"]
EXPOSE 80/tcp
Файл моих требований:
quart==0.8.1
aiohttp==3.5.4
cchardet==2.1.4
aiodns==1.2.0
requests==2.21.0
psutil==5.6.1