2016-08-24 4 views
0

ドッカーコンテナでdjangoを使用しています。私は2つのボタンを持つページを持っています: '実行'と '停止'。誰かが「実行」を押すと、最適化プロセスが開始されます。「停止」を押すと停止するはずです。ドッカー+ 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",{}) 

これは私がドッキングウィンドウコンテナを使用しますが、ちょうどそれをローカルに実行されていない場合に動作します。この構造はループを中断することができますが、実行中に更新中のFigureを表示したり、実行中の他のページの設定を確認することもできます。 (私はこれらすべての問題にも対応できるソリューションが必要です)

しかし、このコードをドッカーのコンテナで実行すると、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 
関連する問題