Я делаю приложение в FLASK, и я включил в него Сельдерей. Тем не менее, я должен запустить приложение через терминал, если я хочу, чтобы работник Сельдерей также работал. (celery -A app.celery worker
). Я попытался запустить его из главного run.py
файла следующим образомЗапуск работника по сельдерей из приложения FLASK
init.py
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.mail import Mail
from celery import Celery
from kombu import serialization
app = Flask(__name__)
app.config.from_object('config')
db = SQLAlchemy(app)
mail = Mail(app)
app.config['CELERY_BROKER_URL'] = 'redis://localhost:6379/0'
app.config['CELERY_RESULT_BACKEND'] = 'redis://localhost:6379/0'
app.config['CELERY_ACCEPT_CONTENT'] = ['json']
app.config['CELERY_TASK_SERIALIZER'] = 'json'
app.config['CELERY_RESULT_SERIALIZER'] = 'json'
celery = Celery(app.name, broker=app.config['CELERY_BROKER_URL'])
celery.conf.update(app.config)
serialization.registry._decoders.pop("application/x-python-serialize")
from app import views
и run.py
#!flask/bin/python
from __future__ import absolute_import, unicode_literals
from app import app
# app.run(debug=True, port=9001)
from celery import current_app
from celery.bin import worker
app = current_app._get_current_object()
worker = worker.worker(app=app)
options = {
'broker': app.config['CELERY_BROKER_URL'],
'loglevel': 'INFO',
'traceback': True,
}
worker.run(**options)
Но это дает ошибку AttributeError: 'Celery' object has no attribute 'config'
Все указатели, чтобы то, что я делаю неправильно, было бы высоко оценено.
Весь смысл сельдерей, чтобы запустить его как отдельный процесс, чтобы ваш веб-приложение может вхолостую вычислительно интенсивных задач к ней, так почему вы пытаетесь работать сельдерей в том же процессе, что и ваш webapp? –
в основном, команда 'celery -App.работник 'запускает как работника сельдерея, так и основное приложение вместе. Я ищу эквивалент сценария python –