将文件复制到s3时,Django命令“ python3 manage.py collectstatic --noinput”扰乱.py文件

时间:2019-02-13 07:23:52

标签: django amazon-s3 aws-glue

我正在尝试使用 Django collectstatic将我的script.py文件发送到 AWS S3 。然后 AWS Glue 读取该文件以执行Spark Job。

当我手动上传 script.py 时, AWS Glue 可以正确读取它。 当我使用以下命令将脚本发送到 AWS S3 时, script.py 被打乱了

python3 manage.py collectstatic --noinput

reference附加AWS Glue编辑脚本的屏幕截图

我尝试将script.py更改为仅具有少量导入和打印,这可以正常工作并且AWS Glue能够读取script.py

然后我尝试添加更多的 print 语句,然后出现混乱。 很难确切地推断出它何时发生混乱,因为有时在 script.py 中添加几个 import 也会发生混乱。

有人面对吗?

观察: Django将文件压缩为898 B,手动上传文件会将文件保留为3KB。尽管下载压缩文件会呈现一个大小为3KB的正确文件。

1 个答案:

答案 0 :(得分:0)

找出问题所在。

collectstatic 命令使用

压缩文件
Content-Encoding: gzip

大多数浏览器会读取元数据并运行gunzip进行充气并正常显示文件。 AWS Glue 无法读取此类元数据并最终使数据混乱。

解决方案: 需要通过在 collectstatic 命令压缩期间排除 .py 文件来提供AWS Glue未压缩脚本。