質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

uWSGI

uWSGIは、PythonでWebサービスを動かすアプリケーションサーバの一つです。WSGI(Web Server Gateway Interface)アプリケーションコンテナの一種で、WSGIに則ったDjangoやFlaskなどで動かすことができます。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

4827閲覧

djangoでのマルチプロセス設定について

itokoishi

総合スコア63

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

uWSGI

uWSGIは、PythonでWebサービスを動かすアプリケーションサーバの一つです。WSGI(Web Server Gateway Interface)アプリケーションコンテナの一種で、WSGIに則ったDjangoやFlaskなどで動かすことができます。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

2クリップ

投稿2020/01/15 00:55

編集2020/01/15 00:59

現在、Djangoにてwebアプリケーションを作成しております。

その中でマルチプロセスの設定について、2点教えて下さい。
サーバー初心者のためおかしなことを聞いているかもしれませんが、よろしくお願いします。

サーバー環境としましては
2コア、メモリ1G
nginx + uwsgi + Django2
です

** 質問1: **
例えばプロセス設定でnginx=2、uwsgi=4としている場合にdjangoは何個のプロセスで動いているのでしょうか?そもそも、nginxのプロセスと、uwsgiのプロセス、python 自体のプロセスは別物になりますか?

質問2:
uwsgiでプロセス設定を2にして、以下例のようなDBテーブルへのインサートが同時に走った場合はどちらも保存されてしまう可能性はありますか?

【例: 先着順での商品購入処理】

productテーブル
product_userテーブル

productテーブルで販売済フラグをチェック
productテーブルの販売済フラグを立てる
product_userテーブルにuser_idとproduct_idを保存
※トランザクション使っています。

※この例だと販売済みフラグいらないじゃんって意見あると思いますが、実際はもっと色々複雑なためフラグで絞り込めるようにしてます。フラグは一定期間経過すると消えます。
フラグじゃなくproduct_userテーブルで販売済み確認すれば重複で保存されないということであれば教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

例えばプロセス設定でnginx=2、uwsgi=4としている場合にdjangoは何個のプロセスで動いているのでしょうか?そもそも、nginxのプロセスと、uwsgiのプロセス、python 自体のプロセスは別物になりますか?

  • nginxのプロセスとuwsgiのプロセスは別物です。
  • uwsgiのプロセスとpython 自体のプロセスは同じと考えて良いです。ただし、uwsgiのモニタープロセスが1つ追加で起動するため、uwsgi=4と指定したなら、uwsgiモニタープロセスが1つ、ワーカープロセスが4つで、Pythonのプロセスは合計5つ起動します。

uwsgiでプロセス設定を2にして、以下例のようなDBテーブルへのインサートが同時に走った場合はどちらも保存されてしまう可能性はありますか?

トランザクションを使っているのであれば、「productテーブルの販売済フラグを立てる」が競合するので両方とも保存されることはないと思います。後から実行された方はトランザクションエラーになるはずです。

フラグじゃなくproduct_userテーブルで販売済み確認すれば重複で保存されないということであれば教えてください。

テーブルスキーマなどもっと詳しい情報が必要になる & Python関係ない世界になるので、別の質問を投稿するのがよさそうです。

投稿2020/01/15 04:24

編集2020/01/15 04:26
shimizukawa

総合スコア1847

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

itokoishi

2020/01/18 03:09

ありがとうございます。 なんとなく掴むことができました。 もう少し勉強して理解を深めていきたいと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問