У меня есть фоновая задача в моем приложении django, которое вводит все строки из CSV в одну из таблиц в моей базе данных. Я передаю 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'. Я получаю печатные сообщения, и не выдается никакой ошибки. Тем не менее, моя база данных не меняется.
Я ожидал, что после выполнения задачи у меня будет полная таблица. Вместо этого ничего не изменилось.