Python 启动命令在 Bluemix 中应该是什么样子的?

What should the Python start command look like in Bluemix?

我正在尝试将 python3 应用程序推送到 Bluemix,但收到错误消息 "missing start command"。我尝试添加 -c "python appname.py",因为 Python 通常在 Windows 中添加 -c "python3 appname.py",就像在 Linux 中的 Python,但两者都没有为我工作。谁能给我正确的启动命令来使用?

Bluemix 中的 Python 构建包默认为 python-2.7.9。您需要明确告诉 Cloud Foundry 您正在使用不同版本的 Python。为此,请将名为 runtime.txt 的文件添加到应用程序的根文件夹中。该文件的内容应该只是您尝试使用的 Python 版本,如下所示:

python-3.4.3

查看此处了解更多信息:https://www.ng.bluemix.net/docs/starters/python/index.html#pythonversions

不需要在推送命令中添加启动命令选项。但是,您的应用程序的根文件夹中应该有一个 Procfile 具有此启动命令。它应该如下所示:

web: python appname.py

其中 appname.py 是您的服务器初始化文件。

您可以在名为 Procfile 的文件中定义启动命令。在推送到 Bluemix 的应用程序代码的根目录中创建 ProcfileProcfile 的内容应如下所示:

web: python3 appname.py

其中 appname.py 是 python 脚本的名称 运行

当您将应用程序推送到 Bluemix 时,您可以通过多种方式设置启动命令;您可以将 -c 与 cf push 命令一起使用,您可以将详细信息放入 Procfile,或者您可以将命令:行放入您的清单中。

这里有一些文档:https://docs.cloudfoundry.org/devguide/deploy-apps/app-startup.html

我发现最简单的方法是将它与其余实例配置一起放在 manifest.yml 中。

以下示例创建两个 Python 应用程序,它们都使用相同的代码,绑定到共享的 postgres 数据库和 cloudamqp 服务。第一个是 Django 前端,第二个启动后台 celery workers:

---
disk_quota: 1024M
domain: eu-gb.mybluemix.net
instances: 1
timeout: 120
memory: 256M
services:
- CloudAMQP-dev
- PostgreSQL-dev
applications:
- name: djangofrontend
  host: djangofrontend
  command: gunicorn myapp.wsgi
- name: workerbackend
  host: workerbackend
  no-route: true
  command: python manage.py celery worker -A myapp -l debug

我只花了半天的时间就弄明白了其中的一些语法,所以我希望以后有人觉得这对我有用。