[因此,我试图在我的Heroku网站上使用芹菜上传使用Redis的文件。我正在尝试上传大小为.exe
的20MB
类型文件。 Heroku在他们的爱好中说:dev部分,可以上传的最大内存为25MB
。但是我正在尝试在Celery中上载文件(将其从字节转换为base64,对其进行解码并将其发送给函数)正在出现kombu.exceptions.OperationalError: OOM command not allowed when used memory > 'maxmemory'.
错误。请注意,当我尝试上传5MB
文件时,它可以正常工作。但是20MB
没有。我在Flask框架中使用Python
mb-兆字节
有两种方法可以在DB中存储文件(Redis只是内存数据库)。您可以将blob存储在数据库中(对于较小的文件,例如几个KB),也可以将文件存储在内存中,并将指向文件的指针存储在数据库中。
因此,根据您的情况,将文件存储在磁盘上,仅将文件指针放在数据库中。
这里发现,Heroku的Ephemeral file system每24小时或部署新版本的应用程序都会被擦除。
因此,您必须执行以下操作:
[如果您以后需要访问文件,并且由于本地heroku磁盘仅具有临时性,则必须将文件放置在某些永久性存储中,例如AWS S3。
[ 。并且,如果您尝试在主流程中将文件写入S3,则您的Web流程可能显示为缓慢/卡住。)