Skip to content

Instantly share code, notes, and snippets.

@adryanf
Last active January 3, 2019 12:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save adryanf/2f44f7cf8059ec726b41bda6ec256243 to your computer and use it in GitHub Desktop.
Save adryanf/2f44f7cf8059ec726b41bda6ec256243 to your computer and use it in GitHub Desktop.
Call celery task chain from flask app using celery task signatures
from flask import Flask, request
from celery import Celer
celery = Celery('sample', backend='rpc://', broker='amqp://guest@localhost//')
app = Flask('sample_api')
upercase = celery.signature('sample.uppercaseme')
lowercase = celery.signature('sample.lowercaseme')
@app.route('/hello/sync', methods=['GET'])
def hello_sync():
name = request.args.get('name')
process_chain = (upercase | lowercase)
task = process_chain.apply_async(kwargs={'value': name})
processed_name = task.get(timeout=30)
return 'Hello, {0}!'.format(processed_name)
if __name__ == '__main__':
app.run(threaded=True)
#Start flask api
flask run
#Start worker
celery -A sample_worker worker
from celery import Celery
from celery.utils.log import get_task_logger
import time, datetime
broker_heartbeat=0
app = Celery('sample', backend='rpc://', broker='amqp://guest@localhost//')
logger = get_task_logger('sample')
@app.task
def uppercaseme(value):
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
logger.info('Got {0} now: {1}'.format(value, now))
logger.info('Working hard on uppercasing...')
time.sleep(30)
return value.upper()
@app.task
def lowercaseme(value):
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
logger.info('Got {0} now: {1}'.format(value, now))
logger.info('Working hard on lowercasing...')
time.sleep(30)
return value.lower()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment