You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
## Celery usage
|
|
|
|
|
|
|
|
|
|
|
|
Jumpserver use celery to run task async. Using redis as the broker, so
|
|
|
|
you should run a redis instance
|
|
|
|
|
|
|
|
#### Run redis
|
|
|
|
|
|
|
|
$ yum -y install redis
|
|
|
|
|
|
|
|
or
|
|
|
|
|
|
|
|
$ docker run -name jumpserver-redis -d -p 6379:6379 redis redis-server
|
|
|
|
|
|
|
|
|
|
|
|
#### Write tasks in app_name/tasks.py
|
|
|
|
|
|
|
|
ops/tasks.py
|
|
|
|
|
|
|
|
```
|
|
|
|
from __future__ import absolute_import
|
|
|
|
|
|
|
|
import time
|
|
|
|
from celery import shared_task
|
|
|
|
from common import celery_app
|
|
|
|
|
|
|
|
|
|
|
|
@shared_task
|
|
|
|
def longtime_add(x, y):
|
|
|
|
print 'long time task begins'
|
|
|
|
# sleep 5 seconds
|
|
|
|
time.sleep(5)
|
|
|
|
print 'long time task finished'
|
|
|
|
return x + y
|
|
|
|
|
|
|
|
|
|
|
|
@celery_app.task(name='hello-world')
|
|
|
|
def hello():
|
|
|
|
print 'hello world!'
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
#### Run celery in development
|
|
|
|
|
|
|
|
```
|
|
|
|
$ cd apps
|
|
|
|
$ celery -A common worker -l info
|
|
|
|
```
|
|
|
|
|
|
|
|
#### Test using task
|
|
|
|
|
|
|
|
```
|
|
|
|
$ ./manage.py shell
|
|
|
|
>>> from ops.tasks import longtime_add
|
|
|
|
>>> res = longtime_add.delay(1, 2)
|
|
|
|
>>> res.get()
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|