используя сельдерей с flask_restful - PullRequest
1 голос
/ 27 сентября 2019

У меня есть простой API для колбы, где я хочу выполнить запрос как задачу Celery, поскольку некоторым конечным точкам требуется много времени для выполнения.

main.py:

from flask import Flask
from flask_restful import Api
from flask_celery import make_celery

app = Flask(__name__)
app.config['CELERY_BROKER_URL'] = 'redis://localhost:6379/0',
app.config['CELERY_RESULT_BACKEND'] = 'redis://localhost:6379/0'

celery = make_celery(app)
api = Api(app)

api.add_resource(someResource, '/someendpoint/')

if __name__ == '__main__':
    app.run(debug=True)

сmake_celery.py:

from celery import Celery

def make_celery(app):
    celery = Celery(
        app.import_name,
        backend=app.config['CELERY_RESULT_BACKEND'],
        broker=app.config['CELERY_BROKER_URL']
    )
    celery.conf.update(app.config)

    class ContextTask(celery.Task):
        def __call__(self, *args, **kwargs):
            with app.app_context():
                return self.run(*args, **kwargs)

    celery.Task = ContextTask
    return celery

Теперь я хочу определить, что ресурс, который я определил в resource.py, является задачей сельдерея:

class Cost(Resource):

    def get(self):

        result = some_code 

        return result

Какой самый удобный способ сделатьполучить метод задания сельдерея здесь?

Большое спасибо!

...