2016-08-24 41 views
0

我在碼頭集裝箱中使用Django。我有一個頁面有兩個按鈕:'運行'和'停止'。當有人按下'運行'時,它應該開始優化過程,當你按'停止'時,它應該停止。碼頭+ Django:循環+使用表格打破

views.py

def runGA(request): 
    #read from database and initate form 
    rundata = RunModel.objects.get(SID=sid) 
    runform = RunForm(request.POST or None, instance = rundata) 
    form = runform.save(commit=False)   # initiating the form, to allow writing form.stop to db.stop 

    if request.method=="POST": 

     if request.POST.get("GA")=="Stop": 
      form.stop = True 

     if request.POST.get("GA")=="Run": 
      for iteration in range(cycles): 
      *optimise something with iteration* 
      rundata = RunModel.objects.get(SID=sid) 
      if rundata.stop == True: 
       break 
      form.stop = False 

     form.save() 
     return render(request,"runGA.html",{}) 

這工作時,我不使用泊塢窗容器,但只是本地運行。這種結構允許中斷一個循環,但它也允許在運行時顯示更新數字,或者在運行時檢查其他頁面上的設置等等。(所以我需要一個能解決所有這些問題的解決方案)

但是,如果我在docker容器中運行這段代碼,看起來好像request.POST有問題。它在循環完成後執行所有請求,而在期間不執行,因爲它應該是。而這個只有發生,當我在碼頭集裝箱運行這個。

任何想法怎麼來的?

謝謝!

泊塢版本:

Client: 
    Version:  1.11.1 
    API version: 1.23 
    Go version: go1.6.2 
    Git commit: 5604cbe 
    Built:  Wed Apr 27 15:27:26 UTC 2016 
    OS/Arch:  darwin/amd64 

    Server: 
    Version:  1.12.0 
    API version: 1.24 
    Go version: go1.6.3 
    Git commit: 8eab29e 
    Built:  Thu Jul 28 23:54:00 2016 
    OS/Arch:  linux/amd64 

泊塢文件可能並不重要,但此處是:https://github.com/neuropower/neuropower-web/blob/development/neuropower/Dockerfile

回答

0

找到解決方案! uwsgi.ini中的線程數僅爲1.增加這個解決了這個問題。

uwsgi.ini

[uwsgi] 
master = true 
processes = 4 
threads = 4 
socket = :3031 
chdir = /code/ 
post-buffering = true 
log-date = true 
max-requests = 5000 
wsgi-file = neuropowertools/wsgi.py