应用程序运行时在 heroku 上创建新文件?
Creating new files on heroku while app is working?
我有一个 python 电报机器人,我已经将它部署在 Heroku 上。但问题是我的程序实际上在工作时创建了腌制文件。我有一个数据库正在保存所需的数据和 pickle 以保存一些嵌套的 类 ,我必须在以后的某个阶段使用它们。所以这些 pickle 文件是程序的重要部分之一。我正在使用莳萝模块进行酸洗。
我能够在本地保存这些文件,但在 Heroku 中无法保存。我将在下面分享日志。它甚至没有到达酸洗部分,但在打开文件本身时出错。
import dill
def saving_test(test_path, test_obj):
try:
save_test_logger.info('Saving test...')
try:
save_test_logger.info('opening file')
test_file = open(test_path, 'wb')
except Exception as exc:
save_test_logger.exception('Error opening file')
return 0
dill.dump(test_obj, test_file)
save_test_logger.debug(f'file saved in {test_path}')
test_file.close()
return 1
except Exception as exc:
save_test_logger.exception('saving error')
test_file.close()
return exc
saving 859ab1303bcd4a65805e364a989ac8ca
2020-10-07T20:53:18.064670+00:00 app[web.1]: Could not open file ./test_objs/859ab1303bcd4a65805e364a989ac8ca.pkl
而且我还在我的程序中添加了日志记录,但现在我很困惑在哪里可以看到应该也捕获异常的原始日志。
这是我第一次使用 Heroku,我对编程也比较陌生。所以请在这里帮我找出问题的原因。
我发现了问题。尽管我已经推送了所有内容,但目录 test_objs 不在 Heroku 上。如果目录不存在,我只是添加了 2 行代码以使用 os 模块创建目录。那解决了问题。我不会删除这个问题,以防万一有人在类似情况下被卡住或困惑,这个问题可能会帮助他们。
我有一个 python 电报机器人,我已经将它部署在 Heroku 上。但问题是我的程序实际上在工作时创建了腌制文件。我有一个数据库正在保存所需的数据和 pickle 以保存一些嵌套的 类 ,我必须在以后的某个阶段使用它们。所以这些 pickle 文件是程序的重要部分之一。我正在使用莳萝模块进行酸洗。 我能够在本地保存这些文件,但在 Heroku 中无法保存。我将在下面分享日志。它甚至没有到达酸洗部分,但在打开文件本身时出错。
import dill
def saving_test(test_path, test_obj):
try:
save_test_logger.info('Saving test...')
try:
save_test_logger.info('opening file')
test_file = open(test_path, 'wb')
except Exception as exc:
save_test_logger.exception('Error opening file')
return 0
dill.dump(test_obj, test_file)
save_test_logger.debug(f'file saved in {test_path}')
test_file.close()
return 1
except Exception as exc:
save_test_logger.exception('saving error')
test_file.close()
return exc
saving 859ab1303bcd4a65805e364a989ac8ca
2020-10-07T20:53:18.064670+00:00 app[web.1]: Could not open file ./test_objs/859ab1303bcd4a65805e364a989ac8ca.pkl
而且我还在我的程序中添加了日志记录,但现在我很困惑在哪里可以看到应该也捕获异常的原始日志。 这是我第一次使用 Heroku,我对编程也比较陌生。所以请在这里帮我找出问题的原因。
我发现了问题。尽管我已经推送了所有内容,但目录 test_objs 不在 Heroku 上。如果目录不存在,我只是添加了 2 行代码以使用 os 模块创建目录。那解决了问题。我不会删除这个问题,以防万一有人在类似情况下被卡住或困惑,这个问题可能会帮助他们。