Задачи получены, но не вставка данных в базу данных с помощью сельдерея - PullRequest
0 голосов
/ 23 января 2020

Я выполняю задачи с 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

Для доступа к базе данных используется одно из требований:

  1. Postgresql
  2. SqlAlchemy
  3. Flask Миграция

Я прикрепил хранилище выше для всего кода.

...