我使用异步向mongo写入,使用motor库。
当我没有几个bulk_writes时,它的工作没有问题。
然而,当我在同一时间有很多写的时候,我会得到一个异常RuntimeError: can't start new thread。
File "/usr/local/lib/python3.7/site-packages/motor/metaprogramming.py", line 77, in method **unwrapped_kwargs)
File "/usr/local/lib/python3.7/site-packages/motor/frameworks/asyncio/__init__.py", line 74 in run_on_executor
_EXECUTOR, functools.partial(fn, *args, **kwargs))
File "uvloop/loop.pyx", line 2702, in uvloop.loop.Loop.run_in_exector
File "/usr/local/lib/python3.7/concurrent/features/thread.py", line 160, in submit
self._adjust_thread_count()
File "/usr/local/lib/python3.7/concurrent/features/thread.py", line 181, in _adjust_thread_count
t.start()
File "usr/local/lib/python3.7/threading.py", line 847, in start
_start_new_thread(self._bootsrap, ())
RuntimeError: can't start new thread我试着改变maxPoolSize,但它没有起作用。
重要事实:
gunicorn app:app --worker-class uvicorn.workers.UvicornWorkerOpenshift中,我遇到了这个问题。在Openshift中的Openshift运行我的代码,当我只有一个worker时,它可以工作。但是对于2+工作人员,我遇到了这个问题。2+AsyncIOMontorClient连接,一次只有两个连接。使用几乎相同代码的mongo的一部分mongo中没有asyncio支持,我的代码没有问题。< code >G 230
发布于 2022-07-21 21:05:07
解决了。每个openshift吊舱有1024个线程的限制。
https://stackoverflow.com/questions/73018445
复制相似问题