Python flask heroku Image Upload Field(WTForms)使应用程序超时(耗时太长)

2024-10-02 22:29:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前在heroku上部署了一个应用程序。在

它从1天起就开始了,我在日志中注意到用户经常在某个站点上遇到H13或H28错误。在

我已经发现问题了。在这个网站上,用户可以上传图片(最多10张)。我在允许multiselect的图像中使用1个输入字段,因此上传多个图像的唯一方法就是一次上传。在

WT表格:

bild = FileField("Weitere Bilder hochladen", validators=[FileAllowed(['jpg', 'png', 'jpeg'], 'Nur Bilder im Formal JPG oder PNG')])

如果请求未被处理,Heroku的默认超时为30秒。但是上载多个图像的过程太长,因此heroku会中断该过程并显示自定义错误页。在

我的想法是:

为了解决这个问题,我将禁用multiselect并在WTForms中添加9个额外的filefield,这样用户就必须一个一个地上传图片,这是方法吗?在

或者我应该添加一个进度条并增加超时时间,这里的最佳实践是什么?在

编辑

好吧,我找到了一些解决方案,但是我想使用进度条,并增加heroku的请求超时。在

我将尝试上载一个新的procfile:

^{pr2}$

Tags: 方法进度条用户图像应用程序heroku站点过程
1条回答
网友
1楼 · 发布于 2024-10-02 22:29:05

好吧,我设法解决了这个问题,但我做得很快,效率不高。在

最好的解决方案似乎在这里: Heroku`s solution

我通过增加应用程序的超时时间来解决这个问题。因此,我将新的procfile上传到我的heroku应用程序:

web: gunicorn main:app  timeout 120

之后,我在表单的submit按钮上实现了一个加载动画,该按钮发出了长请求。我添加的部分位于span tag

^{pr2}$

我把动画初始化为display: none;。如果单击按钮,表单将提交。在这里,我使用jQuery将加载动画的显示更改为display: inherit;,为了使其看起来更好,我还更改了按钮的背景色:

$('#regi').submit(function(){
    $('.ani-holder').css("display", "inherit");
    $('.add-room-container .add-btn').css("background-color", "#afddfe");           
});

函数在表单提交请求时执行。然后我redirect url并重新加载页面,就这样。如果请求很快,那么您将看不到任何内容。在

相关问题 更多 >