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

时间:2015-05-06 23:27:03

标签: python-3.x ibm-cloud

我正在尝试将python3应用程序推送到Bluemix,但是得到错误消息"缺少启动命令"。我试图添加-c" python appname.py"正如Python通常在Windows和-c" python3 appname.py"就像Linux中的Python一样,但对我来说都不适用。任何人都可以给我正确的启动命令吗?

3 个答案:

答案 0 :(得分:4)

当您将应用程序推送到Bluemix时,您可以使用多个选项来设置启动命令;您可以在cf push命令中使用-c,可以将详细信息放入Procfile中,也可以在清单中放置命令:行。

此处提供了一些文档:Android's Developer Blog

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

以下示例创建两个使用相同代码的Python应用程序,绑定到共享postgres数据库和cloudamqp服务。第一个是Django前端,第二个是背景芹菜工人:

---
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

我花了半天的时间才弄明白这个语法,所以我希望除了我以外的人在将来发现它有用。

答案 1 :(得分:3)

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

web: python3 appname.py

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

答案 2 :(得分:2)

Bluemix中的Python buildpack默认为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

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

web: python appname.py

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