Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
News: #UK bans all travels to #Tigray, #Amhara, and #Gambela regions, issues sweeping warnings across Ethiopia
The British government has significantly expanded its travel warnings for #Ethiopia, banning all travels to Tigray, Amhara and Gambella regions and advising against travels to several regions and large border areas owing to deteriorating security conditions.
In its latest advisory, the UK Foreign, Commonwealth & Development Office (#FCDO) stated:
UK nationals are advised against all travel to Tigray region, where recent reports show militarized tensions in various places.
UK’s travel warning also bans all travels to Amhara region, where a war between government and the Fano armed groups remained active since it first broke in 2023; and Gambela region, where renewed clashes saw scored killed and schools shuttered.
The advisory also extends to all areas within 10 kilometers of Ethiopia’s border with #Eritrea, and within 20 kilometers of the ….
Read more: https://addisstandard.com/?p=54877
News: #Australia issues ‘do not travel’ advisory for #Tigray, #Amhara, and other regions in #Ethiopia
The Australian government has issued a “do not travel” advisory for Ethiopia’s Tigray regional state, warning that the security situation could deteriorate rapidly with little or no warning, according to its latest update on the Smartraveller travel advisory platform.
In the update, Australian authorities urged their citizens currently in Tigray to leave when it is safe to do so using commercial means, noting that Australia’s ability to provide consular assistance in the region remains “extremely limited.” Travelers were also advised to follow local authorities’ instructions and to shelter indoors in the event of civil unrest or armed conflict.
Beyond Tigray, Australia continues to advise against all travel to the Amhara, #Benishangul-Gumuz, and #Gambela regional states, as well as border areas with #Eritrea, #Sudan, #South_Sudan, #Kenya, and #Somalia,....
Read more: https://addisstandard.com/?p=54924
Area Sales Manager
#ethiochicken_ethiopia
#business
#Bule | #Ambo | #Gambela | #Ginir | #Hosaena | #Yirgachefe | #Sheno
BSc Degree in Animal Science, Veterinary field of study
Duties & Responsibilities:
- Develop specific plans to ensure sales growth agent appointment in the territory
- Map how to achieve sales volume through prioritizing to make big achievement with minimum effort and shorter time
Quanitity Required: 20
Minimum Years Of Experience: #0_years
Deadline: December 16, 2023
How To Apply: Submit your applications (Cover Letter) including a detailed CV via email: [email protected]
N.B: Please title your application with the subject line: - " Area Sales Manager" and Specify the area you are applying for