Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
from fastapi.concurrency import run_in_threadpool
async def execute(data: DataRequest) -> DataResponse:
try:
result = await run_in_threadpool(sync_function, data)
return DataResponse(data=result)
except Exception as e:
return DataResponse(
error=str(e),
success=False,
)
В общем работает нормально. Для всех вызовов под капотом используется общий тредпул, всё работает предсказуемо.
Но потребовалось изменить количество запускаемых в пуле потоков (по умолчанию создается 40 воркеров).
Так как дело происходит с FastAPI, делается это через lifespan используя настройки anyio:
import anyio
@asynccontextmanager
async def lifespan(app: FastAPI):
limiter = anyio.to_thread.current_default_thread_limiter()
limiter.total_tokens = 100
yield
# если вдруг нужно вернуть обратно
limiter.total_tokens = 40
Зачем менять количество воркеров?
- уменьшить, если оперативки мало (один тред занимает ~8мб)
- увеличить чтобы выдержать нагрузку
Если есть предложения получше при тех же вводных - предлагайте😉
#async
🌍 Over 80% of the world’s phosphorite—used for fertilizer—comes from just five countries. This concentration makes global food production highly dependent on a few natural resource deposits. ✨
#naturalresources⚡#minerals⚡#agriculture⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 In Chile’s Atacama Desert, salt flat brines supply much of the world’s lithium—a key mineral for rechargeable batteries—mined from groundwater beneath ancient salt crusts in one of Earth’s driest places. ✨
#naturalresources⚡#mining⚡#desert⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
Subsoil Bonanza: Venezuela’s Natural Resources
Venezuela possesses the world’s largest oil reserves, but those are not the country’s only underground riches. From natural gas to gold, from bauxite to coltan, the Caribbean nation has no shortage of natural resources. It is no wonder it remains firmly in the crosshairs of global powers.
For the full and interactive infographic click here 👉🏼https://shorturl.at/ilYnL
#gold#naturalresources#oil#infographic#vainfographic
🚀 Venezuela's National Assembly Approves New Mining Law to Attract Foreign Investment
Venezuela's National Assembly unanimously passed a new mining law on Thursday, which includes 131 articles aimed at garnering support from the United States and attracting foreign investment. According to Jin10, the law features provisions that support foreign investment, such as an 'economic balance' clause and international arbitration options, differing from the 1999 framework that restricted disputes to local courts.
The legislation introduces a simplified tax system, with royalties up to 13% of production and a new mining tax up to 6% of total revenue, while exempting several existing taxes. The maximum concession period is extended to 30 years, up from the previous 20 years, with the possibility of two 10-year extensions.
Officials stated that the reform aims to attract investment in projects involving gold, bauxite, and other strategic minerals. However, the government retains the authority to designate certain resources or areas as national interests and impose special conditions.
#Venezuela#MiningLaw#ForeignInvestment#Gold#Bauxite#EconomicReform#TaxIncentives#NaturalResources#NationalAssembly#InternationalArbitration