Я выполняю задачи с Celery, но у меня возникла проблема, у меня есть несколько фиктивных данных для вставки в базу данных Postgres, но она не вставляется. Я также прочитал похожий вопрос , но все же, он не удался.
Это мой репозиторий .
Так что это мой задача выполняется в сельдерее:
def insert_data(name, hyper_drive_rating):
"""
:param name:
:param hyper_drive_rating:
:return: None
"""
star = Stars(name=name, hyper_drive_rating=hyper_drive_rating)
db.session.add(star)
db.session.commit()
db.session.close()
return "Done"
@celery.task(name='run.paginate_requested_data')
def paginate_requested_data():
"""
This is a function for
requesting data from an external api.
:return: None
"""
insert_data('muda', '3.0')
Затем после того, как я вызвал задачу в функции, которая перенаправляет на конечную точку URL:
@app.route('/api/v1/starwars', methods=['GET'])
def get_star_ships():
"""
Returns the json of the sorted
data of star ships.
:return:
"""
paginate_requested_data.delay()
return "Done show data"
Удивительно, когда я маршрут до конечной точки /api/v1/starwars
, я возвращаю сообщение Готово показать данные , но когда я проверяю в базе данных, чтобы увидеть, если данные были вставлены, его там нет. Я делаю это после запуска сельдерея следующим образом:
celery -A run.celery worker -l info
и
celery -A run.celery beat -l info
Для доступа к базе данных используется одно из требований:
- Postgresql
- SqlAlchemy
- Flask Миграция
Я прикрепил хранилище выше для всего кода.