teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

ヘッダーにkeep-aliveを追加したときのキャプチャを追加

2021/01/16 05:05

投稿

obon_t
obon_t

スコア52

title CHANGED
File without changes
body CHANGED
@@ -123,4 +123,19 @@
123
123
  ```
124
124
  レスポンスヘッダーを見ると、http/1.0からhttp1.1にはなったのですが、Connectionはcloseのままでした。
125
125
  ![http1.1を指定](4839894939d0351320c449f469cd1f81.png)
126
- そして、データの欠落についてですが、まだ改善は見られておりません。
126
+ そして、データの欠落についてですが、まだ改善は見られておりません。
127
+
128
+ ---
129
+
130
+ **<2021/1/16 14:03 追記>**
131
+
132
+ WSGIRequestHandlerでhttp1.1の指定に加えて、Responseヘッダにkeep-aliveを追加。
133
+ ```python
134
+ resp = Response(event_stream(), mimetype="text/event-stream")
135
+ resp.headers['Connection'] = 'keep-alive'
136
+ return resp
137
+ ```
138
+ Connectionにkeep-aliveが追加されるようにはなったのですが、Connection:closeは残ったまま。
139
+ データの欠落も、まだ改善は見られておりません。
140
+
141
+ ![イメージ説明](bb5a5709058037d68e7e28237803c994.png)

2

http1.1を試した結果を追加

2021/01/16 05:05

投稿

obon_t
obon_t

スコア52

title CHANGED
File without changes
body CHANGED
@@ -110,4 +110,17 @@
110
110
  ・参考コード:[Flaskで簡易版プログレスバー実装して処理の進捗見れるようにしてやんよ!!!
111
111
  ](https://tokidoki-web.com/2020/02/flask%E3%81%A7%E7%B0%A1%E6%98%93%E7%89%88%E3%83%97%E3%83%AD%E3%82%B0%E3%83%AC%E3%82%B9%E3%83%90%E3%83%BC%E5%AE%9F%E8%A3%85%E3%81%97%E3%81%A6%E5%87%A6%E7%90%86%E3%81%AE%E9%80%B2%E6%8D%97%E8%A6%8B/)
112
112
 
113
- 些細なことでも構いませんので、お力添えのほどよろしくお願いいたします。
113
+ 些細なことでも構いませんので、お力添えのほどよろしくお願いいたします。
114
+
115
+ ---
116
+
117
+ **<2021/1/16 13:15 追記>**
118
+
119
+ app.run()の直前でWSGIRequestHandlerでhttp1.1を指定した結果は下記のようになりました。[【参考コード】](https://stackoverflow.com/questions/10523879/how-to-make-flask-keep-ajax-http-connection-alive)
120
+
121
+ ```python
122
+ WSGIRequestHandler.protocol_version = "HTTP/1.1"
123
+ ```
124
+ レスポンスヘッダーを見ると、http/1.0からhttp1.1にはなったのですが、Connectionはcloseのままでした。
125
+ ![http1.1を指定](4839894939d0351320c449f469cd1f81.png)
126
+ そして、データの欠落についてですが、まだ改善は見られておりません。

1

書式の改善

2021/01/16 04:12

投稿

obon_t
obon_t

スコア52

title CHANGED
File without changes
body CHANGED
@@ -1,16 +1,11 @@
1
1
  ### 前提・実現したいこと
2
- Python(flask)でブラウザでボタンを押したらサーバー側で処理を行い、結果をSSEでブラウザ側に表示するサイトを作っています。
2
+ Python(flask)でブラウザでボタンを押したらサーバー側で処理を行い、結果をSSEでブラウザ側に表示するサイトを作っています。しかし、ブラウザで表示されるログは、一部が欠落してスキップしてデータが表示されてしまい苦戦しております。(例:①〜⑩の処理を表示したいが、②の処理がブラウザ側では取得することができないことがときどき起こる)
3
- しかし、ブラウザで表示されるログは、一部が欠落してスキップしてデータが表示されてしまい苦戦しております。
4
- (例:①〜⑩の処理を表示したいが、②の処理がブラウザ側では取得することができないことがときどき起こる)
5
3
 
6
4
  ### 処理内容
7
- ajaxでブラウザ側のボタンを押したらサーバー側で処理の結果をQueueモージュールにてデータを逐次入れていき、
5
+ ajaxでブラウザ側のボタンを押したらサーバー側で処理の結果をQueueモージュールにてデータを逐次入れていき、それをwhileの中でデータを取り出し、event-streamでブラウザ側に結果を表示しようと試みてますが、思ったように動作することができておりません。(サーバーの処理後ブラウザへ値を渡したいです)
8
- それをwhileの中でデータを取り出し、event-streamでブラウザ側に結果を表示しようと試みてますが、
9
- 思ったように動作することができておりません。(サーバーの処理後ブラウザへ値を渡したいです)
10
6
 
11
7
  ### エラー画面・取得できない例
12
- サーバー側のログを見てみると、①〜⑩の処理は取得できているのですが、ブラウザ側では②を取得することができてません。
13
- ブラウザに上手く表示されないデータは、毎回固定ではなく、クリックするタイミングにもより変化してます。(全て正常に動作することもあります)
8
+ サーバー側のログを見てみると、①〜⑩の処理は取得できているのですが、ブラウザ側では②を取得することができてません。ブラウザに上手く表示されないデータは、毎回固定ではなく、クリックするタイミングにもより変化してます。(全て正常に動作することもあります)
14
9
 
15
10
  【ブラウザ側】
16
11
  ![ブラウザ側](bbf71ada6a210a7debe3c5ce9bd428c7.png)