حمزه قائم پناه
حمزه قائم پناه
خواندن ۱ دقیقه·۱ سال پیش

استفاده از Celery در پایتون

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

برای استفاده ازش نیاز به یک Task Queue داری که می‌تونی مثلا از RabbitMQ استفاده کنی (میشه از Redis و یا سرویس‌هایی مثل Amazon SQS استفاده کرد). من چون نمی‌خواستم روی local machine ام نصب کنم، از این سایت برای ایجادش استفاده کردم:

https://www.cloudamqp.com

گام‌های راه اندازیش:

  • انتخاب و نصب یک انتغال‌دهنده پیام (broker)
  • نصب سلری و ایجاد اولین تسک
  • راه‌اندازی worker و فراخوانی تسک‌ها
  • ردگیری تسک‌ها در طی تغییر وضعیت‌شون و بررسی پاسخ برگشتی‌شون

برای نصب سلری از دستور زیر استفاده می‌کنیم:

pip install celery

حالا یک فایل برای راه اندازی سلری ایجاد می‌کنیم:

from celery import Celery # first argument is the name of module, 2nd is broker URL app = Celery('tasks', broker='pyamqp://guest@localhost//') @app.task def add(x, y): return x + y

برای راه‌اندازی worker از دستور زیر استفاده می‌کنیم:

celery -A tasks worker --loglevel=INFO

توی پرداکشن worker رو لازمه در background ران کنیم.

برای فراخوانی یک تسک از دستور زیر استفاده می‌کنیم:

from tasks import add add.delay(4, 4)

اگر بخوایم وضعیت‌های سلری رو track کنیم و نتایج رو نگه‌داریم، باید یکجا نگهداری بشن که آپشن‌هایی مثل SQL, Mongo, Memcached, Redis, PRC یا هر روشی که خودت تعریف کنی رو داری.

فرض کن که می‌خوای از Redis استفاده کنی، کدش به این صورت خواهد شد:

app = Celery('tasks', broker='pyamqp://guest@localhost//', backend='redis://localhost')
celerybroker
مهندس نرم‌افزار و عاشق توسعه فردی - مهندس نرم‌افزار - اکس هم بنیان‌گذار و مدیرفنی و پرداکت استارتاپ کشمون
شاید از این پست‌ها خوشتان بیاید