我有一个基于 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