celery-task-tigger

A controllable timing task widgets with Celery.


License
MIT
Install
pip install celery-task-tigger==0.4

Documentation

celery-task-tigger

release license celery

A controllable timing task widgets with Celery

About

As is known to all, Celery have a already provides periodic task and it's very perfit. But, Assume this case: After my task was called, I hope it's task can frequency of execution, and when celery task was started.

The above case, Periodic task is hard to practice, Becacuse it's depend on celery beat. celery-task-tigger do it over simple packaging or implement for solution to do it.

Installation

pip install celery-task-tigger

Useage

Assume you have aleady install celery and can do it.

Bases

Option max_times is must be appoint.

from celery_tasktigger.decorator import tigger_task

@app.task(bind=True)
@tigger_task(max_times='forever')    # forever is expressed unlimited time
def add(self, x, y):
    return x + y

max_times

Option max_times: The maximum number of execute the task times.

Type: int

Note: The value 'forever' is expressed unlimited time.

Example:

@app.task(bind=True)
@tigger_task(max_times=3)    # after execute 3 times, raise an exception
def add(self, x, y):
    return x + y

countdown

Option countdown: You can also provide the countdown argument to execute.

Type: int

Default: 1 (seconds)

Example:

@app.task(bind=True)
@tigger_task(max_times='forever', countdown=3)    # each execute in 3 seconds
def add(self, x, y):
    return x + y

How To Calling Task

>> from example import add
>> add.apply_async((1,2))

you can also delayed execute task, as follow:

>> from example import add
>> add.apply_async((1,2), countdown=4)   # after 4 seconds, begin start task

About Celery Task, Please see below for details: Celery Calling-Tasks Document

How To Stop

if you appoint max_times='forever' or provides the bigger values of max_times, you must stop it in programe.

>> result = add.apply_async((1,2))
>> result.revoke()
   or
>> from mycelery import app
>> app.control.revoke('task_id')

See below for details: Celery Document——FAQ

Some screenshots

Features

  • 100% full compatible with Celery

  • the frequency of execution for task

  • ...and many other stuff (o,0)

Author

  • Boyle Gu