当前位置: 首页 > 知识库问答 >
问题:

使用Heroku部署Django REST API[GET请求,无限加载]

宁修永
2023-03-14

所以我现在正在做一个项目,看起来像:

- project-d/
  - api/
  - app/
  - web/

我们的重点是首先将api文件夹中的所有内容部署到Heroku上。这就是Django项目所在地。

  • 在Heroku上创建了一个新节点
  • 添加了ENV变量(包括:DISABLE\u COLLECTSTATIC=1,因为我没有静态文件)。我的数据库(PostgreSQL)运行在Docker容器内的数字海洋液滴上(港口是开放的)
  • 将git项目连接到Heroku(Heroku登录,Heroku git:remote-一个特别的公园)
  • 在设置中的允许的主机中添加了Heroku项目的域。py(参见此处文件:https://github.com/buzzzlightyear/special-park/blob/deployment/api/specialpark/settings.py)
  • 我使用了Pipfile,因此不需要任何要求。txt
  • 添加了运行时。包含python-3.7.6的txt
  • 添加了包含以下内容的Procfile:gunicorn specialpark。wsgi—pythonpath=specialpark—日志文件—
  • 现在我把所有的东西都推到Heroku上,因为我们只想部署子目录,所以我运行了这个命令:git subtree push——前缀api/Heroku master

答复:

➜  project-d git:(deployment) git subtree push --prefix api/ heroku master
git push using:  heroku master
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 284 bytes | 284.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Python app detected
remote: -----> Requirements file has been changed, clearing cached dependencies
remote: cp: cannot stat '/tmp/build_88d222dddd3ed0c8949a8d8032e6beb6/requirements.txt': No such file or directory
remote: -----> Installing python-3.7.6
remote: -----> Installing pip
remote: -----> Installing dependencies with Pipenv 2018.5.18…
remote:        Installing dependencies from Pipfile.lock (7a8381)…
remote: -----> Installing SQLite3
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote: 
remote: -----> Compressing...
remote:        Done: 73.2M
remote: -----> Launching...
remote:        Released v23
remote:        https://special-park.herokuapp.com/ deployed to Heroku
remote: 
remote: Verifying deploy... done.
To https://git.heroku.com/special-park.git
   c296867..e786aa7  e786aa7057e186e3da89faef8360c306675ce07d -> master

因此,该应用程序似乎已经部署。所以我打开了Postman,试图向/users/car发送一个GET请求,这样它就会返回该用户的所有汽车。

但是当我用Postman发送请求时,请求只是继续加载,永远不会完成。我两者都试了

  • <代码>https://special-park.herokuapp.com/users/car/

但它不会像在本地运行项目时那样向我发送回复。

有人能发现错误吗?这是回购协议,我在部署分支内工作:

我添加了两个视图

@api_view(["GET"])
@permission_classes([])
def welcome(request):
    return JsonResponse({ 'msg': 'Welcome to Special Park'})

@api_view(["GET"])
@permission_classes([])
def welcome_user(request):
    user = User.objects.get(id=1)
    return JsonResponse({ 'msg': 'Welcome to Special Park', 'user': user.username })

第一个可行,但第二个失败。所以我知道这和数据库有关。我认为这种联系从未建立。该数据库是一个PostgreSQL数据库,在数字海洋液滴上的docker容器内运行。

有人知道为什么这个连接不起作用吗?

共有1个答案

陆昊
2023-03-14

原因是,数字海洋上的数据库和Heroku应用程序之间的连接从未建立。我删除了Digital Ocean上的数据库,让Heroku为我制作了一个数据库。现在它工作得很好!

 类似资料:
  • 问题内容: 我正在尝试将Flask应用程序部署到Heroku,但是在推送代码时出现错误 我不确定该怎么做,我尝试将端口从5000更改为33507,但无济于事。我的Procfile看起来像这样: main.py 是启动服务器的主要Flask文件。 问题答案: 在Heroku托管的Flask应用中,我使用以下代码启动服务器: 在本地开发时,它将使用端口5000,在生产环境中,Heroku将设置环境变量

  • 我需要发送一个请求,如下所示 我使用以下代码,但它似乎没有发送一个正确的请求,因为响应对象是空的。我也想知道如何显示完整的url restTemboard发送?我知道WireShark可以使用,但有什么方法可以使用restTem板检索它吗? 密码

  • 推荐先去了解下 在 Heroku 里部署 node.js 应用的文档。 首先,我们需要告诉 Heroku 安装项目的开发依赖包 devDependencies (以便能在 Heroku 环境下运行 npm run build): heroku config:set NPM_CONFIG_PRODUCTION=false 同时,我们想让应用以 生产模式 运行,绑定的主机IP为 0.0.0.0: he

  • git repo https://github.com/detoner777/email-feedback-app heroku错误日志: 2019-08-20t09:44:08.211815+00:00Heroku[router]:at=error code=h12 desc=“请求超时”方法=get path=“/auth/google/callback?fuserinfo.profile&a

  • 当我试图在heroku上部署springboot应用程序时,出现了以下错误: 无法执行目标org.apache.Maven.plugins:maven-compiler-plugin:3.8.1:在项目后端编译(default-compile):错误编译:无效的目标版本:11->[Help 1]Remote:[error]Remote:[error]要查看错误的全部堆栈跟踪,请使用-e开关重新运行

  • 目标 将 https://github.com/Ricardo-Li/node-practice-2 (这个项目已经被删了。参照 https://github.com/alsotang/node-lessons/tree/master/lesson3 的代码自己操作一下吧。)这个项目部署上 heroku,成为一个线上项目 我部署的在这里 http://serene-falls-9294.herok