首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Heroku node.js和Flask应用程序在本地工作,但不在服务器中工作

Heroku node.js和Flask应用程序在本地工作,但不在服务器中工作
EN

Stack Overflow用户
提问于 2016-06-16 20:22:37
回答 1查看 2K关注 0票数 1

我有一个web应用程序,它使用node.js并与Flask应用程序通信,以检索一些配置并将作业发送到后端。Flask返回一个包含信息的JSON

Flask文件(REST.PY):

代码语言:javascript
运行
AI代码解释
复制
from flask import Flask, jsonify, request, redirect, url_for
import subprocess

import os
import json
from cross_domain import *
app = Flask(__name__)

...

@app.route('/api/v1.0/proteins', methods=['GET', 'OPTIONS'])
@crossdomain(origin='*')
def get_protein_names():
proteins = os.walk(TARGET).next()[1]
protein_lst = [{"filename": protein} for protein in sorted(proteins) if  protein != "scripts"]
return jsonify({"files": protein_lst})

if __name__ == '__main__':
app.run(debug=True,port=9000)

下面是js代码:

代码语言:javascript
运行
AI代码解释
复制
...

this.restAddr = "http://127.0.0.1:9000";

...

this.httpGet = function(url, callback) {
var xmlHttp;
xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
  if (xmlHttp.readyState === 4 && xmlHttp.status === 200) {
    callback(xmlHttp.responseText);
  }
};

...

httpGet(restAddr + "/api/v1.0/proteins", populateProteins);

我目前使用的是this buildback,以便在Procfile中运行这两个命令。当我在本地使用foreman start运行时,它可以工作,但当我部署到Heroku时,框架不再相互通信,XMLHTTPRequests中也没有响应。不过,我仍然可以使用node.js部件。

以下是Heroku的日志:

代码语言:javascript
运行
AI代码解释
复制
...
2016-06-16T20:08:59.174025+00:00 app[web.1]: buildpack=runit ps=python at=start
2016-06-16T20:08:59.174156+00:00 app[web.1]: buildpack=runit ps=node at=start
2016-06-16T20:09:04.490687+00:00 app[web.1]:  * Running on http://127.0.0.1:9000/ (Press CTRL+C to quit)
2016-06-16T20:09:04.515389+00:00 app[web.1]:  * Restarting with stat
2016-06-16T20:09:05.138990+00:00 heroku[web.1]: State changed from starting to up
2016-06-16T20:09:05.568687+00:00 app[web.1]:  * Debugger is active!
2016-06-16T20:09:05.593316+00:00 app[web.1]:  * Debugger pin code: 237-920-039
2016-06-16T20:09:06.730693+00:00 app[web.1]: Succeeded connected to: <MONGODB_URI> in port 35556

以下是运行Foreman时出现的内容:

代码语言:javascript
运行
AI代码解释
复制
 $ foreman start -f Procfile.local 
14:59:30 node.1   | started with pid 21241
14:59:30 python.1 | started with pid 21242
14:59:31 python.1 |  * Running on http://127.0.0.1:9000/ (Press CTRL+C to quit)
14:59:31 python.1 |  * Restarting with stat
14:59:31 python.1 |  * Debugger is active!
14:59:31 python.1 |  * Debugger pin code: 215-168-436
14:59:31 node.1   | Succeeded connected to: mongodb://localhost/algdock in port 3000

我需要深入了解为什么它在部署时不起作用,或者是否有其他更好的方法来解决这个问题。

编辑:使用gunicorn for python,它提供了Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch

Procfile.web

代码语言:javascript
运行
AI代码解释
复制
web: node gui/web_app/AlGDock/bin/www
web: gunicorn --pythonpath gui/api --bind 127.0.0.1:9000 wsgi:app

wsgi.py

代码语言:javascript
运行
AI代码解释
复制
from REST import app
if __name__ == "__main__":
    app.run()

Heroku日志:

代码语言:javascript
运行
AI代码解释
复制
2016-06-17T00:35:25.808594+00:00 heroku[web.1]: Starting process with command `bin/runsvdir-dyno`
2016-06-17T00:35:26.398041+00:00 heroku[web.1]: Process exited with status 0
2016-06-17T00:35:28.003708+00:00 app[web.1]: buildpack=runit ps=web at=start
2016-06-17T00:35:28.376799+00:00 app[web.1]: [2016-06-17 00:35:28 +0000] [15] [INFO] Starting gunicorn 19.6.0
2016-06-17T00:35:28.377454+00:00 app[web.1]: [2016-06-17 00:35:28 +0000] [15] [INFO] Listening at: http://127.0.0.1:9000 (15)
2016-06-17T00:35:28.377583+00:00 app[web.1]: [2016-06-17 00:35:28 +0000] [15] [INFO] Using worker: sync
2016-06-17T00:35:28.385995+00:00 app[web.1]: [2016-06-17 00:35:28 +0000] [20] [INFO] Booting worker with pid: 20
2016-06-17T00:35:28.826322+00:00 app[web.1]: /app/target/
2016-06-17T00:35:28.826340+00:00 app[web.1]: /app/AlGDock/
2016-06-17T00:36:25.826633+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
EN

回答 1

Stack Overflow用户

发布于 2016-06-21 06:51:15

如果你正在运行一个web dyno,那么heroku需要能够在60秒内连接到它,否则它会假设它不工作并关闭dyno。heroku使用的端口没有设置,所以您需要从dynos环境中获取端口,我在启动时遇到了相同的错误,因为您无法控制heroku分配的端口。

node + express版本为app.set('port', (process.env.PORT));

此问题显示了在使用flask Deploying Flask app to Heroku时如何获取此值

编辑:也来自heroku python文档

port = int(os.environ.get("PORT", 5000)) app.run(host='0.0.0.0', port=port)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37868711

复制
相关文章
VBA: 定时保存Excel文件
文章背景:有一份文件的数据更新比较频繁,而其他电脑需要随时查看该文件的最新数据,因此,需要经常保存该文件。
Exploring
2022/09/20
2.4K0
VBA:  定时保存Excel文件
Word VBA技术:强制用户在指定文件夹中保存文档
可以使用下面列出的SaveFile过程来代替Word自己的内置文件保存程序,这将强制用户将文档直接保存到指定的目标文件夹或者该文件夹中的子文件夹,而不能将文档保存到目标文件夹之外的位置。
fanjy
2023/02/24
7940
VBA:获取指定数值在指定一维数组中的位置
文章背景:在采用VBA抓取数据时,有时需要判断指定数值是否在一维数组中已存在;如果存在,则希望能够获取该数值在数组内的位置。
Exploring
2022/08/10
7.4K0
VBA:获取指定数值在指定一维数组中的位置
VBA Excel 文件发布成PDF文件
批量把某个文件夹里的Excel文件发布成PDF文件,注意需前提设置好打印区域,打印缩放,当然这些你们也可以用代码实现!
办公魔盒
2019/07/22
1.3K0
VBA Excel 文件发布成PDF文件
复制指定源位置的多级文件夹下所有文件到指定目标位置
  3.遍历源位置文件夹下所有的文件,修改源位置为当前遍历项的文件位置,目标位置为刚刚上部创建的文件夹位置。
阿豪聊干货
2018/08/09
1.8K0
【VBA】在excel中检索文本
虽然在excel文件中检索的vba代码不知道写了多少遍了,每次需要的时候,都是从网上找,然后写。实在是低效的做法。从网上找了一段代码,放在此处,以后需要的时候可以随手拿来。
东风压倒西风
2022/09/06
2.9K0
VBA: 通过Dir函数查找指定文件
文章背景: 通过VBA编写代码时,有时需要判断某个文件是否存在;或者判断在文件夹内是否存在指定类型的文件。此时,就会涉及到Dir函数。下面就来介绍Dir函数的语法和应用场景。
Exploring
2022/09/20
7.1K0
VBA: 通过Dir函数查找指定文件
matlab保存图片到指定文件夹_matlab保存图片到指定路径
gcf固定,保存为1.png. 如果你想保存为别的格式,jpg什么的都可以,具体支持格式如下:
全栈程序员站长
2022/09/30
3.4K0
matlab保存图片到指定文件夹_matlab保存图片到指定路径
在xcode4.2中手工添加GPX文件,指定位置。
XCode 4.2终于支持地点模拟了,不用忍受真机调试的各种不便了,模拟方法也很简单(恕我盗用几个别人的图):
EltonZheng
2021/01/26
1.7K0
在xcode4.2中手工添加GPX文件,指定位置。
Excel: 通过VBA代码打开ppt文件
文章背景:使用Excel的Userform时,有时想要打开指定路径的ppt文件。下面介绍两种打开ppt文件的方式。
Exploring
2022/09/20
3.5K0
Excel: 通过VBA代码打开ppt文件
使用Excel的VBA下载文件
今天发现了个用EXCEL下载文件的实例,看起来很不错,收藏一下。 附件如下:xls 这是代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 Sub downloads()     Dim i As Integer     Dim Path As String     Dim str As String     Application
用户1272546
2018/06/04
3K0
VBA: 遍历文件抓取指定条件的数据
文章背景:要查看某次考试成绩不及格的所有学生名单;假定按年级建文件夹,每个文件夹内有各班的考试成绩表(见下图)。需要遍历所有表格,然后对每行的学生成绩进行判断。
Exploring
2022/08/10
1.6K0
VBA: 遍历文件抓取指定条件的数据
Excel VBA文件分割器构思
有一堆定长文件和长度字段定义,我们需要用Excel进行按长度分列。 如何存储长度字段定义和分割? 1.把复制出来的列定义存到一个表中,前面再加一列文件名。 这样子文件清单怎么列?VBA程序可以扫描但是要提供动态触发更新,或者数据透视加VBA刷新。 2.文件名信息存到另一个表? 手动步骤多了。 早上突然想到可以先在一个表转换:把长度类型定义分别拼接成特定形式存到文件名列表的列中。 未完待续。
林万程
2018/06/26
5600
批处理之实战一--找到指定文件的指定关键词,并将结果保存到指定位置的TXT中!
昨天看到有个小伙伴在微信后台留言,说想要做一个批处理文件,搜索软件运行产生的log日志,搜索其中的关键词,并将结果打印出来,这个真的是很有实用意义啊,一方面减小了我们的工作量,另一方面也是对我们学习成果的一个检测和实际应用。所以,今天发个有关BAT批处理的教程。
浩Coding
2019/07/03
2.8K0
批处理之实战一--找到指定文件的指定关键词,并将结果保存到指定位置的TXT中!
VBA 在 Excel 中的常用操作
设置单元格 Value 里使用 Chr(10) 和 Chr(13),分别表示回车、换行。
零式的天空
2022/03/24
3.3K0
VBA 在 Excel 中的常用操作
设置单元格 Value 里使用 Chr(10) 和 Chr(13),分别表示回车、换行。
mzlogin
2020/04/16
3.8K0
Excel: 通过VBA代码打开word文件
文章背景:在使用Excel的Userform时,有时想要打开指定路径的word文件。下面介绍打开word文件的一种方式。
Exploring
2022/09/20
3.9K0
Excel: 通过VBA代码打开word文件
VBA汇总多个Excel文件数据
将某个文件夹下,所有Excel文件及子文件夹下的Excel文件内容,复制到一张汇总表。
xyj
2020/07/28
2.7K0
VBA汇总多个Excel文件数据
VBA: 打开带密码的Excel文件
文章背景:想要通过VBA打开一份带密码的Excel文件,然后在文件内填入信息。前述要求可以借助workbook.open来实现。
Exploring
2022/09/20
4.6K0
JetBrains软件配置文件保存位置修改
JetBrains相关产品很好用,但是配置文件真的很占空间,而且默认是放到c盘的,所以最好的解决办法就是修改一下配置文件的保存位置。
MinChess
2022/12/26
4.1K0
JetBrains软件配置文件保存位置修改

相似问题

api加密密钥库服务真的安全吗?

10

安全地在会话中存储API密钥吗?

10

真的有任何安全的方法来存储加密密钥吗?

20

在HMAC哈希中传递API密钥安全吗?

10

如何安全地存储API密钥

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文