Heroku-Redis内存>';maxmemory';在hobby:dev中有一个20MB的文件,它应该是25MB
所以我尝试上传一个芹菜的文件,在我的Heroku网站上使用Redis。我正在尝试上载一个大小为Heroku-Redis内存>';maxmemory';在hobby:dev中有一个20MB的文件,它应该是25MB,heroku,redis,celery,heroku-redis,Heroku,Redis,Celery,Heroku Redis,所以我尝试上传一个芹菜的文件,在我的Heroku网站上使用Redis。我正在尝试上载一个大小为20MB的.exe类型文件。Heroku在他们的爱好:开发部分说,可以上传的最大内存是25MB。但是,我正在尝试上传芹菜中的文件(将其从字节转换为base64,解码并发送到函数)得到kombu.exceptions.OperationalError:OOM命令在使用内存时不允许>maxmemory.error。请记住,当我尝试上载例如5MB文件时,它工作正常。但是20MB没有。我将Python与Flas
20MB
的.exe
类型文件。Heroku在他们的爱好:开发部分说,可以上传的最大内存是25MB
。但是,我正在尝试上传芹菜中的文件(将其从字节转换为base64,解码并发送到函数)得到kombu.exceptions.OperationalError:OOM命令在使用内存时不允许>maxmemory.
error。请记住,当我尝试上载例如5MB
文件时,它工作正常。但是20MB
没有。我将Python与Flask框架结合使用,有两种方法可以将文件存储在DB中(Redis只是内存中的DB)。您可以将blob存储在DB中(对于小文件,比如几KBs),也可以将文件存储在内存中,并将指向该文件的指针存储在DB中
因此,对于您的情况,将文件存储在磁盘上,并仅将文件指针放在数据库中
这里需要注意的是,Heroku有一个每24小时或在您部署新版本的应用程序时被擦除的应用程序
因此,您必须执行以下操作:
(我们之所以经历了所有这些困难,而没有将文件直接放在S3中,是因为对本地磁盘的访问速度很快,而S3磁盘可能位于其他位置的其他服务器场中,在那里保存文件需要时间。如果在主进程中尝试将文件写入S3,则web进程可能会显得缓慢/停滞。)下载文件后,我会立即删除该文件。所以没关系。除了如何将其存储在磁盘中之外,我没有使用localhsot,我可以只使用
wb
?我真的不明白如何做第二种方法写入磁盘是一种非常常见的操作;阅读您正在使用的任何框架的文档/教程。如果您可以将整个20MB文件写入Redis,那么将文件路径作为字符串写入并不困难,只需将文件路径发送到Redis即可。然后从芹菜任务内的文件路径“读取”该文件。我不明白这有什么困难?问题是该文件不在我的计算机上,另一个客户正在向我发送该文件。是否有可能从芹菜中接收请求。获取数据()
(客户的文件为字节)?您建议怎么做?