我在Heroku上使用Python/Django(Cedar Stack),我有一个我需要编写的管理命令,它将从S3存储桶中取出一个文件并对其进行处理.我不确定我是否理解如何使用短暂的文件系统.是否只有某些可写的目录?我发现另一篇文章暗示只有某些文件夹是可写的(但是,它似乎不适用于Cedar堆栈).我发现了这篇开发文章,但它没有详细介绍(注意:我确实理解它只是暂时的.我只需要解压缩文件并处理文件).我可以在应用程序的根目录下的任何位置创建一个文件夹吗?我怎么能得到它?好像我可能只是使用$ HOME.我通过连接到via做了一些测试
$ heroku run bash
Run Code Online (Sandbox Code Playgroud)
和运行:
$ echo #HOME
Run Code Online (Sandbox Code Playgroud)
收益:
/应用
和运行:
$ mkdir $HOME/tmp
Run Code Online (Sandbox Code Playgroud)
在应用程序的根目录中创建一个文件夹,并提供与其他文件和文件夹相同的用户和组.
那么......我在这里缺少什么?一个更好的方法吗?这有OS环境变量吗?我跑"env"而且我看不到更好的一个.
你好很棒的人!
在我提出问题之前,我尝试了这些 SO 帖子:
它们都不起作用!
我想让用户在网站上更新新课程。查询集为Courses,我想通过电子邮件发送它们。
send_daemon_email.delay(instance=instance,all_courses=Course.objects.all())
Run Code Online (Sandbox Code Playgroud)
我的功能看起来像:
@shared_task
def send_daemon_email(instance,all_courses):
ctx = {'instance':instance,'all_courses':all_courses}
message = get_template("emails/ads.html").render(ctx)
''' '''
Run Code Online (Sandbox Code Playgroud)
当我尝试将电子邮件发送给特定用户时,我得到的错误是
<User: First Name> is not JSON serializable
只是因为delay()从 celery 得到了一个非序列化的数据。
如何将 Django 对象发送到 celery 任务以便我可以在模板中使用它?我知道我可以将所需的信息作为 python 对象发送
send_daemon_email.delay(first_name='Name',
last_name='Lapr',all_courses = [{'title1':'title1',},{'title2':'title2',}])
Run Code Online (Sandbox Code Playgroud)
但这将是太多的信息。
任何提示将不胜感激。谢谢!