Python 如何在Bluemix上运行后台进程?

Python 如何在Bluemix上运行后台进程?,python,ibm-cloud,cloud-foundry,Python,Ibm Cloud,Cloud Foundry,我正在尝试让一个非常简单的python程序在IBMBlueMix上作为CloudFoundry应用程序作为后台进程运行 我把它放在一个盒子里了。 有一个单行req文件,因为我发现它比setup.py更容易,python构建包需要它来运行 我的完整用例是,我有一个用Django编写的API,我需要一个MQTT客户机,它将在它旁边运行,以从代理收集数据(我认为是Watson IOT的) 我尝试在同一个CF应用程序中运行这两个应用程序,并使用两行PROC文件,如下所示: web: gunicorn -

我正在尝试让一个非常简单的python程序在IBMBlueMix上作为CloudFoundry应用程序作为后台进程运行

我把它放在一个盒子里了。 有一个单行req文件,因为我发现它比setup.py更容易,python构建包需要它来运行

我的完整用例是,我有一个用Django编写的API,我需要一个MQTT客户机,它将在它旁边运行,以从代理收集数据(我认为是Watson IOT的)

我尝试在同一个CF应用程序中运行这两个应用程序,并使用两行PROC文件,如下所示:

web: gunicorn -e DJANGO_SETTINGS_MODULE=conf.dev conf.wsgi --workers 2
worker: python time.py
但是第二个过程被忽略了

我也尝试了当前的配置,但是Procfile只包含第二行,它告诉我它找不到start命令

现在,使用清单中的start命令和位于
true
no route
,要么它没有通过健康检查,要么它只是在开始步骤等待,直到我得到这个错误:

2016-07-22T13:10:36.671+0200
[LGR/null]
err
WebsocketListener.Start: Error connecting to a doppler server
2016-07-22T13:10:36.677+0200
[LGR/null]
err
proxy: error connecting to 159.8.128.238:8081: dial tcp 159.8.128.238:8081: getsockopt: connection refused
那么,是否有一种方法可以在Bluemix中运行后台任务(如果可能的话)作为独立应用程序(以便更轻松地扩展和更新)

编辑:现在它可以工作了,不过除了在Python脚本中设置字符串格式的输入错误,我没有做任何更改,尽管应用程序几乎每分钟都会崩溃

Removing crash for app with id 3978a475-4dc6-495f-9662-a6fd562dc28a

问题的简短回答:一个单独的应用程序,其
no route
参数设置为
true

好的,显然我已经让它充分发挥作用了

我不确定我做了什么,但问题可能是因为我要求一个3200万的实例,而最小值似乎是6400万,所以Bluemix/CF对我的要求不太满意,所以崩溃了


我在以前的尝试中使用了128M,但我想当时我没有使用
no route:true

我使用这种方法为web和worker实例运行两个独立的应用程序。然而,健康检查失败了,我还是被绊倒了

因此,对于工人,我建议禁用路由,另外禁用健康检查

以下清单用于通过gunicorn为web运行Django,并为工人运行芹菜

我的
manifest.yml

---
applications:
  - name: myapp
    host: myapp
    domain: eu-de.mybluemix.net
    memory: 128M
    command: bash ./run_web.sh

  - name: myapp-workers
    memory: 128M
    no-route: true
    health-check-type: none
    command: bash ./run_worker.sh

run\u web.sh
run\u worker.sh
shell脚本包含运行组件的命令,对于web实例,我在运行脚本中添加了migration和collectatic命令。

这是正确的方法,是一个没有路由的独立应用程序。@opiethehokie正是我想说的