【发布时间】:2019-05-21 14:50:17
【问题描述】:
我的 django 应用程序中有一个后台任务,它将 csv 中的所有行输入到我数据库中的一个表中。我通过管理站点传递 csv,它创建了一个后台任务,我可以使用 python manage.py process_tasks 运行它。这一切都在本地工作,但在我的 heroku 应用程序上,由于某种原因它没有。
我认为从heroku控制台输入数据可能是不可能的,但是如果我在heroku控制台上运行python manage.py shell,我可以输入数据就好了。
这是将数据输入数据库的代码:
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”来运行它。我收到打印消息,没有抛出错误。不过,我的数据库没有改变。
我希望在任务运行后我会有一张完整的桌子。相反,什么都没有改变。
【问题讨论】:
标签: django postgresql heroku background-task