2016-07-22 19 views
1

我試圖讓一個非常簡單的python程序作爲CloudFoundry應用程序在IBM Bluemix上作爲後臺進程運行。如何在Bluemix上運行後臺進程?

我已經把它放在Github repo。 有一個單行req文件,因爲我覺得它比setup.py更容易,python buildpack需要它運行。

我的完整用例是我有一個使用Django編寫的API,我需要一個MQTT客戶端,它將運行它以從代理收集數據(我認爲它與Watson IOT有關)。

我試圖在同一CF應用程序有2線Procfile看起來像這樣同時運行:

web: gunicorn -e DJANGO_SETTINGS_MODULE=conf.dev conf.wsgi --workers 2 
worker: python time.py 

但第二個過程,恰恰忽略了。

我也試過在當前的配置中,但是隻包含第二行的Procfile,它告訴我它找不到啓動命令。

現在,在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 

回答

1

短的問題的答案:一個單獨的應用程序no-route參數設置爲true

好的,所以我顯然已經完全工作。

我不確定我做了什麼,但問題可能來自於我要求32M實例並且最低似乎爲64M,因此Bluemix/CF對我的需求並不滿意並墜毀。

我是用128M在我的舊的嘗試,但我認爲我沒有把no-route: true當時

+0

這是正確的方式來做到這一點,一個單獨的應用程序與無路線。 – opiethehokie

+0

@opiethehokie正是我想說的話 –

0

我所使用的方法來運行網絡兩個獨立的應用程序和工作人員的情況。但是,我仍然絆倒了失敗的健康檢查。

因此,對於工作人員,我建議禁用路由和添加以禁用健康檢查。

下面的清單爲通過運行Django而運行web和celery的工作者工作。

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_web.shrun_worker.sh shell腳本包含的命令來運行的組件,併爲Web比如我加入遷移和collecstatic命令來運行的腳本。