اجرای سلری در ویندوز

امیرحسین بیگدلو 3 هفته قبل

چند سال پیش، زمانی که نسخه 4 سلری منتشر شد، پشتیبانی از ویندوز نیز متوقف شد. سلری به دلیل مشکلات مالی دیگر نتوانست به پشتیبانی از ویندوز ادامه دهد. نسخه 3 سلری آخرین نسخه ای بود که با ویندوز سازگار بود. هر چند که معمولا سلری در سرورهایی اجرا میشوند که سیستم عامل لینوکس دارند، اما ممکن است در محیط توسعه نیاز به اجرای سلری در ویندوز داشته باشید. در این مقاله بررسی میکنیم که اگر بخواهید Celery را در ویندوز اجرا کنید چه کاری باید بکنید.

قبل از شروع به کار، بهتر است پکیج pywin32 پایتون را با دستور زیر نصب کنید. این پکیج به اجرای بهتر افزونه های پایتون در ویندوز کمک میکند.

pip install pywin32

دوره پیشنهادی: دوره آموزش celery پایتون

# مشکل prefork سلری و راه حل

نکته ای که باید در نظر داشته باشید اینست که در واقع سلری مشکلی با ویندوز ندارد و میتواند به روی ویندوز اجرا شود. مشکل اصلی این است که prefork سلری در ویندوز کار نمیکند. prefork را میتوانید به عنوان یک استخر(pool) در نظر بگیرید که تسک ها در آن اجرا میشوند. این prefork به شکل پیشفرض در سلری اجرا میشود که در ویندوز پشتیبانی نمیشود. در نسخه های قبلی، سلری میتوانست بین prefork و spawn جابجا شود اما در نسخه های جدید spawn که در ویندوز پشتیبانی میشد دیگر وجود ندارد.

حالا شما چند راه برای حل این مشکل و اجرای سلری در ویندوز دارید. ساده ترین روش این است که نوع استخر(pool) سلری را از نوع solo انتخاب کنید. با استفاده از solo میتوان فقط یک تسک را در هر لحظه انجام داد. این نوع از pool برای تسک هایی که فشار زیادی به cpu وارد میکنند مناسب است. اگر میخواهید چند تسک را به شکل همزمان اجرا کنید، میتوانید چند worker را به شکل solo اجرا کنید. برای اجرا کردن سلری به شکل solo از دستور زیر استفاده کنید:

C:\Dev>celery --app=app.app worker --pool=solo

نوع دیگری از pool که میتوانید استفاده کنید، thread است. این نوع از استخر مستقیما توسط سیستم عامل اجرا میشود و برای تسک های IO-bound مناسب است. در حال حاظر thread توسط ویندوز پشتیبانی میشود. برای اجرای سلری به شکل thread میتوانید از دستور پایین استفاده کنید:

C:\Dev>celery --app=app.app worker --pool=threads --concurrency=8

گزینه آخری که میتوانید برای اجرای سلری در ویندوز امتحان کنید، استفاده از gevent است. gevent میتواند تسک ها را با کمک greenlets به شکل همزمان اجرا کند. greenlets مشابه coroutine در asyncio است. زمانی که یک تسک منتظر پاسخ است، تسک دیگر را اجرا میکند. از آنجایی که gevent به شکل رسمی از ویندوز پشتیبانی میکند، این روش برای تسک های IO-bound بسیار مناسب است و میوانید با خیال راحت از آن در ویندوز استفاده کنید. برای اجرای سلری در ویندوز با gevent از دستور زیر استفاده کنید:

C:\Dev>celery --app=app.app worker --pool=gevent --concurrency=8

در این مقاله چند روش برای اجرای سلری در ویندوز را دیدید. تمام این روش ها فعلا در ویندوز کار میکنند. اما یادتان باشد که در آینده ممکن است همه چیز تغییر کند و این روش ها پاسخگو نباشند.

مطالب مشابه



مونگارد