-
Notifications
You must be signed in to change notification settings - Fork 2
/
project.py
47 lines (32 loc) · 1.18 KB
/
project.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# -*- encoding: utf-8 -*-
import crossover
from celery import Celery
from celery.utils.log import get_task_logger
from examples.database import redis
logger = get_task_logger(__name__)
app = Celery('tasks')
app.config_from_object('examples.project_1.celery_conf')
crossover.register_router(app)
@app.task(queue='project_1')
def simple():
return 'HELLO 1'
@app.task(name='plus', queue='project_1')
@crossover.callback(auto_callback=True)
def plus(x, y):
_add = x + y
logger.info('Addition {0} + {1} = {2}'.format(x, y, _add))
return _add
@app.task(name='times', queue='project_1')
@crossover.callback(bind_callback_meta=True)
def times(callback_meta, x, y):
logger.info('Execution actual multiplication task.')
calculate_times.delay(callback_meta, x, y)
@app.task(name='calculate_times', queue='project_1')
def calculate_times(callback_meta, x, y):
_times = x * y
logger.info('Multiplication {0} * {1} = {2}'.format(x, y, _times))
crossover.CallBack(callback_meta)(result=_times)
@crossover.metrics_subscribe()
def metrics_subscriber(metrics):
redis.db.set('dispatch_queue_time', metrics.dispatch_queue_time)
redis.db.set('task_name', metrics.task_name)