在后台任务中添加的数据库条目不会显示在 heroku 上

Database entries added in background task don't show up on heroku

我的 Django 应用程序中有一个后台任务,它将 csv 中的所有行输入到我数据库中的 table 之一。我通过管理站点传递 csv,它创建了一个后台任务,我可以 运行 和 python manage.py process_tasks。这一切都在本地工作,但在我的 heroku 应用程序上,由于某种原因它没有。

我想也许无法从 heroku 控制台输入数据,但如果我 运行 python manage.py shell 在 heroku 控制台上,我可以输入数据。

这是将数据输入数据库的代码:

from background_task import background

...

@background(schedule=5)
def save_course_from_df(df):
    df = pandas.read_json(df)
    db = 0
    for index, row in df.iterrows():
        print("%s percent done!" % str(db / df.shape[0]))
        db += 1
        values = dict(row)
        values = {key: values[key] for key in values.keys()
                  if type(values[key]) != float or not math.isnan(values[key])}
        try:
            Course.objects.update_or_create(
                url=row['url'],
                defaults=values
            )
        except IntegrityError:
            pass
    print('done!')

我 运行 通过打开 heroku 控制台并 运行 宁 'python manage.py process_tasks' 来做到这一点。我收到了打印消息,并且没有抛出任何错误。不过,我的数据库没有改变。

我预计在任务 运行 之后我会有一个完整的 table。相反,没有任何改变。

看来问题出在我的迁移上。由于某种原因,heroku 应用程序上的数据库对其模型具有 null=True 参数的列具有非空约束。