Инструменты пользователя

Инструменты сайта


celery

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
celery [2018/12/18 14:41]
admin [Подключаем Базу данных]
celery [2019/10/01 16:13] (текущий)
Строка 15: Строка 15:
     return string[::-1]     return string[::-1]
 </code> </code>
- в cli запускаем команду+ в cli запускаем celery
 <code>celery -A tasks worker --loglevel=info</code> <code>celery -A tasks worker --loglevel=info</code>
 Из другой cli проверяем Из другой cli проверяем
Строка 46: Строка 46:
     return string[::-1]     return string[::-1]
 </code> </code>
-<code></code>+проверяем в cli 
 +<code> 
 +result = reverse.delay('nevvad'
 +# сразу смотрим статус 
 +result.status 
 +# получаем  
 +'PENDING' 
 +# через несколько секунд еще раз смотрим статус, задержка отработала 
 +'SUCCESS' 
 +# так же все delay присутствуют в бд 
 +</code> 
 +еще проверка 
 +<code> 
 +result = reverse.delay('nevvad'
 +result.ready() 
 +# получаем False 
 +# через несколько секунд 
 +# получаем True 
 + 
 +result.get() 
 +'davven' 
 +</code> 
 +=====flask===== 
 +Берем с [[http://flask.pocoo.org/docs/1.0/patterns/celery/|оффсайта]] колбы макет для celery называем task_celery.py 
 +<code python> 
 +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 
 +</code> 
 +Создаем модуль flask c именем celery_example.py 
 +<code python> 
 +from flask import Flask 
 +from task_celery import make_celery 
 + 
 +app = Flask(__name__) 
 +app.config['CELERY_BROKER_URL'] = 'amqp://localhost' 
 +app.config['CELERY_RESULT_BACKEND'] = 'db+sqlite:///celery.db' 
 + 
 +celery = make_celery(app) 
 + 
 +@app.route('/process/<name>'
 +def process(name): 
 +    return name 
 +     
 +@celery.task(name='celery_example.reverse'
 +def reverse(string): 
 +    return string[::-1] 
 + 
 +if __name__ == '__main__': 
 +    app.run(debug=True) 
 +</code> 
 +стартуем celery 
 +<code> 
 +celery -A celery_example.celery worker --pool=eventlet -l info 
 +</code> 
 +проверяем в браузере 
 +<code>http://127.0.0.1:5000/process/nevvad 
 +проверяем бд, должна появится запись 
 +</code> 
 +=====Отправка почты=====
 <code></code> <code></code>
 <code></code> <code></code>
celery.1545133312.txt.gz · Последнее изменение: 2019/10/01 16:13 (внешнее изменение)