node.js - 如何在python子进程中使用异步等待
问题描述
我2021-03-16T06:52:01.205519+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=POST path="/formsubmit" host=test-searcher.herokuapp.com request_id=fc6ee612-693f-4e87-9aa6-331989fd05fd fwd="117.197.157.92" dyno=web.1 connect=0ms service=30001ms status=503 bytes=0 protocol=https
在我的节点 js 应用程序中收到此错误。为了解决这个问题,我想使用 async/await 但我无法在我的 js 代码中使用它。请帮助我。
到目前为止,我认为这是因为 heroku 的 30 秒政策 https://devcenter.heroku.com/articles/limits#http-timeouts
我的节点js代码如下
// form submit request
app.post('/formsubmit', function(req, res){
csvData = req.files.csvfile.data.toString('utf8');
filteredArray = cleanArray(csvData.split(/\r?\n/))
csvData = get_array_string(filteredArray)
// Send request to python script
var spawn = require('child_process').spawn;
var process = spawn('python', ["./webextraction.py", csvData, req.body.keywords, req.body.full_search])
process.stdout.on('data', async function(data){
var data_array = []
data_array.push(data.toString())
res.setHeader('Content-disposition', 'attachment; filename=output.csv');
res.set('Content-Type', 'text/csv');
var strin = data_array[0].trim()
strin = strin.replace(/(\r)/gm, "");
res.send(strin)
});
});
我在heroku上收到以下错误
2021-03-16T06:51:07.059126+00:00 heroku[web.1]: Restarting
2021-03-16T06:51:07.087873+00:00 heroku[web.1]: State changed from up to starting
2021-03-16T06:51:08.797707+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2021-03-16T06:51:08.989681+00:00 heroku[web.1]: Process exited with status 143
2021-03-16T06:51:28.040420+00:00 heroku[web.1]: Starting process with command `node app.js`
2021-03-16T06:51:30.263324+00:00 app[web.1]: server running on port 3000
2021-03-16T06:51:30.478212+00:00 heroku[web.1]: State changed from starting to up
2021-03-16T06:51:38.000000+00:00 app[api]: Build succeeded
2021-03-16T06:52:01.205519+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=POST path="/formsubmit" host=test-searcher.herokuapp.com request_id=fc6ee612-693f-4e87-9aa6-331989fd05fd fwd="117.197.157.92" dyno=web.1 connect=0ms service=30001ms status=503 bytes=0 protocol=https
2021-03-16T06:53:07.169061+00:00 heroku[router]: at=info method=GET path="/" host=test-searcher.herokuapp.com request_id=db24efd1-cd75-4cb2-a00e-b72cd7160f4e fwd="117.197.157.92" dyno=web.1 connect=0ms service=17ms status=200 bytes=3208 protocol=https
我在下面尝试解决此问题
// form submit request
app.post('/formsubmit', function(req, res){
csvData = req.files.csvfile.data.toString('utf8');
filteredArray = cleanArray(csvData.split(/\r?\n/))
csvData = get_array_string(filteredArray)
// Send request to python script
var spawn = require('child_process').spawn;
var process = spawn('python', ["./webextraction.py", csvData, req.body.keywords, req.body.full_search])
process.stdout.on('data', async function(data){
var data_array = []
await data_array.push(data.toString())
res.setHeader('Content-disposition', 'attachment; filename=output.csv');
res.set('Content-Type', 'text/csv');
var strin = data_array[0].trim()
strin = strin.replace(/(\r)/gm, "");
res.send(strin)
});
});
但我仍然遇到同样的错误
Restarting
2021-03-16T07:50:07.577176+00:00 heroku[web.1]: State changed from up to starting
2021-03-16T07:50:08.520994+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2021-03-16T07:50:08.642371+00:00 heroku[web.1]: Process exited with status 143
2021-03-16T07:50:26.333143+00:00 heroku[web.1]: Starting process with command `node app.js`
2021-03-16T07:50:28.628842+00:00 app[web.1]: server running on port 3000
2021-03-16T07:50:29.106381+00:00 heroku[web.1]: State changed from starting to up
2021-03-16T07:50:44.000000+00:00 app[api]: Build succeeded
2021-03-16T07:53:02.758211+00:00 heroku[router]: at=info method=GET path="/" host=test-searcher.herokuapp.com request_id=29b18518-800e-4ec6-a3f5-7d579e056394 fwd="117.197.136.20" dyno=web.1 connect=1ms service=23ms status=200 bytes=3208 protocol=https
2021-03-16T07:53:55.638541+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=POST path="/formsubmit" host=test-searcher.herokuapp.com request_id=18a16fd9-1670-426e-a998-940ec3a16a1b fwd="117.197.136.20" dyno=web.1 connect=0ms service=30008ms status=503 bytes=0 protocol=https
解决方案
推荐阅读
- go - golang 中的 [][]*datatype 是什么意思
- wix - 系统找不到文件“wixca.dll”
- css - 更改 Keycloak 自定义登录主题中的登录按钮颜色
- json - 如何取消引用嵌套的json?
- jquery - 如何在 ng-repeat Angular js 中将长类型日期转换为本地日期格式?
- android - 如何创建 WorkerParameters
- jquery - nodejs http请求getaddrinfo ENOTFOUND错误
- c# - 来自数据库的密码验证,用于在 Windows 窗体应用程序中安装安装文件
- sql - 如何合并来自两个不同来源的数据
- tensorflow - TensorFlow 分类