از سلری برای انجام یک سری task به صورت Async استفاده میشه. یعنی کد متوقف انجام شدن تسک نشه.
برای استفاده ازش نیاز به یک Task Queue داری که میتونی مثلا از RabbitMQ استفاده کنی (میشه از Redis و یا سرویسهایی مثل Amazon SQS استفاده کرد). من چون نمیخواستم روی local machine ام نصب کنم، از این سایت برای ایجادش استفاده کردم:
https://www.cloudamqp.com
برای نصب سلری از دستور زیر استفاده میکنیم:
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')