def make_celery(app):
celery = Celery(app.import_name, backend=app.config['result_backend'],
broker=app.config['broker_url'])
celery.conf.update(app.config)
TaskBase = celery.Task
class ContextTask(TaskBase):
abstract = True
def __call__(self, *args, **kwargs):
with app.app_context():
return TaskBase.__call__(self, *args, **kwargs)
celery.Task = ContextTask
return celery
app = Flask(__name__)
logger = get_task_logger(__name__)
app.config['MAIL_SERVER'] = 'smtp.gmail.com'
app.config['MAIL_PORT'] = 587
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USERNAME'] = 'xyz@gmail.com'
app.config['MAIL_PASSWORD'] = '456'
mail = Mail(app)
app.config.update(
broker_url='amqp://aarm:4569@localhost/aarm',
result_backend='rpc://'
)
CELERYBEAT_SCHEDULE = {
'every-minute_mailSend': {
'task': 'app.mailSend',
'schedule': crontab(minute="*/1")
}
}
celery = make_celery(app)
@app.route('/')
def index():
mailSend.apply_async()
return 'Mail sent'
@celery.task()
def mailSend():
msg = Message('Hello', sender='xyz@gmail.com', recipients=
['abc@gmail.com'])
msg.body = "First time send email by flask"
mail.send(msg)
когда я запускаю flask и сельдерей в другом терминале, он работает отлично, никаких ошибок не дает, но в функции браузера return Mail отправлено, но задача сельдерея не запускается. Я начинаю узнавать о сельдерее. Я хочу отправлять электронную почту каждую минуту, так что пожалуйста