Python falcon api执行芹菜中的任务

Python falcon api执行芹菜中的任务,python,celery,celery-task,falcon,Python,Celery,Celery Task,Falcon,task.py文件 from time import sleep import celery app = celery.Celery('tasks', broker='redis://localhost:6379/0', backend='redis://localhost:6379/0') @app.task def add(x, y): """ :param int x: :param int y: :return: int """

task.py文件

from time import sleep

import celery


app = celery.Celery('tasks', broker='redis://localhost:6379/0', backend='redis://localhost:6379/0')


@app.task
def add(x, y):
    """
    :param int x:
    :param int y:
    :return: int
    """
    # sleep just for demonstration
    sleep(5)

    return x + y
my falcon app.py文件

import json
import requests
import falcon
from tasks import add
from celery.result import AsyncResult
import falcon
import json
class StartTask(object):

    def on_post(self, req, resp):
        # start task
        data = json.loads(req.stream.read().decode('UTF-8'))

        print "got request"

        task = add.delay(data['add_one'], data['add_two'])
        resp.status = falcon.HTTP_200
        # return task_id to client
        result = {'task_id': task.id}
        resp.body = json.dumps(result)


class TaskStatus(object):

    def on_get(self, req, resp, task_id):
        # get result of task by task_id and generate content to client
        task_result = AsyncResult(task_id)
        result = {'status': task_result.status, 'result': task_result.result}
        resp.status = falcon.HTTP_200
        resp.body = json.dumps(result)


app = falcon.API()

# registration of routes
app.add_route('/start_task', StartTask())
app.add_route('/task_status/{task_id}', TaskStatus())
外部api将传递参数以执行任务,或将通知建议的任何其他方法 现在,这纯粹是事后调用,我如何在falcon中的get方法上实现它 我还有一个

import json
import requests
import falcon
from tasks import add
from celery.result import AsyncResult
import falcon
import json

class JSON_Middleware(object):
    def process_request(self, req, resp):
        raw_json = json.loads(req.stream.read().decode('UTF-8'))
        print req.content_length
        return raw_json

class Test:
    def on_post(self,req,resp):
        print raw_json
        pass

app = application = falcon.API(middleware=JSON_Middleware())
t = Test()
app.add_route('/test',t)
我如何在post上使用原始的json,或者我是以一种工作的方式来做的?不确定

谢谢你的收看,谢谢你的回答 当做
新手

你能确切地说明你想要完成什么吗?从您的帖子中还不清楚,尝试使用apiCelery运行任务使用消息代理在主进程和工作进程之间进行通信。您正在使用rabbitmq吗?您应该尝试从API路由向芹菜发送触发任务的消息。向芹菜发送API将触发任务