0

状況

1 台のコンピューターを複数の機器に接続しています。このコンピューターには、 uWSGIを使用してFalconアプリケーションをnginx提供するサーバーがあります。このアプリケーションは、1 人のユーザーが計測器へのアクセスを要求すると、他のユーザーはアクセスできなくなると考えられています。これは、次のコード (私のコードを簡略化したもの) によって実現します。 WSGI

import json
import falcon

class Lab(object):
    def __init__(self):
        self.available_instruments = ["money_maker", "unicornifier"]  # Not actual instruments
        self.connected_instruments = []
    def on_get(self, request, response):
        response.status = falcon.HTTP_OK
        response.content_type = "application/json"
        response.body = json.dumps({
            "connected": self.connected_instruments,
            "available": self.available_instruments
        })
    def on_post(self, request, response):
        json_body = json.loads(request.body)
        instrument = json_body['connect']
        if instrument in self.connected_instruments:
            raise falcon.HTTPBadRequest('Busy')
        elif instrument not in self.available_instruments:
            raise falcon.HTTPBadRequest('No such instrument')
        self.connected_instruments.append(instrument)
        response.status = falcon.HTTP_OK
        response.content_type = "application/json"
        response.body = json.dumps({
            "connected": self.connected_instruments,
            "available": self.available_instruments
        })

application = falcon.API()
l = Lab()
application.add_route('/', lab)

そしてリクエストボディ

{
    "connect": "money_maker"
}

問題

楽器を「接続」すると、接続されていることがすぐにわかります。しかし、連続する GET 要求は期待される答えを与えません。私は得る

{
    "connected": [],
    "available": ["money_maker", "unicornifier"]
}

しかし、テスト目的で、ローカルの uWSGI インスタンスで上記のコードを実行すると、これは起こりません。私が認識していない nginx-uWSGI の相互作用はありますか? いくらでも助けていただければ幸いです。

完全を期すために、ここではuWSGI によって呼び出されるnginx.confおよびファイルに従ってください。api.ini

nginx/サイト利用可能/api

#nginx config file for uWSGI requests routing
server {
    listen 80;
    server_name example.com;
    location /api {
        include uwsgi_params;
        uwsgi_pass unix:///tmp/api.sock;
    }
}

api.ini

[uwsgi]

master = true
processes = 5

socket = /tmp/%n.sock
chmod-socket = 666
uid = apidev
gid = www-data

chdir = %d../%n
pythonpath = %d../%n

module = %n

vacuum = true
4

1 に答える 1