我正在尝试将python3应用程序推送到Bluemix,但是得到错误消息"缺少启动命令"。我试图添加-c" python appname.py"正如Python通常在Windows和-c" python3 appname.py"就像Linux中的Python一样,但对我来说都不适用。任何人都可以给我正确的启动命令吗?
答案 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的应用代码的根目录中创建Procfile
。 Procfile
的内容应如下所示:
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是您的服务器初始化文件。