質問編集履歴

2

現在検証中によりおまたせしております

2019/05/18 04:16

投稿

Kyojiro
Kyojiro

スコア6

test CHANGED
File without changes
test CHANGED
@@ -231,3 +231,9 @@
231
231
 
232
232
 
233
233
  以上、宜しくお願い致します
234
+
235
+
236
+
237
+ ▼ 2019/05/18
238
+
239
+ 現在メモリを調査しておりまして、こちらの検証結果について改めてご連絡させて頂きます。

1

コードの記述がなかったため

2019/05/18 04:16

投稿

Kyojiro
Kyojiro

スコア6

test CHANGED
File without changes
test CHANGED
@@ -34,4 +34,200 @@
34
34
 
35
35
 
36
36
 
37
+ ■コマンドにつきまして(起動)
38
+
39
+ ```sh
40
+
41
+ $ cd /var/www/htdocs/contents/
42
+
43
+ $ python appd.py
44
+
45
+ ```
46
+
47
+
48
+
49
+
50
+
51
+ ■appd.pyの主要なコードを記述します
52
+
53
+ ```Python appd.py
54
+
55
+ from bottle import (route, template, error, response,
56
+
57
+ request, HTTPError, HTTPResponse, TEMPLATE_PATH,
58
+
59
+ abort, run, redirect, debug, Bottle, static_file)
60
+
61
+ from beaker.middleware import SessionMiddleware
62
+
63
+ from paste import httpserver as web
64
+
65
+
66
+
67
+ import os
68
+
69
+ import sys
70
+
71
+ import time
72
+
73
+ import math
74
+
75
+ from datetime import datetime, timedelta
76
+
77
+ import re
78
+
79
+ session_timeout = 3600000
80
+
81
+ session_opts = {
82
+
83
+ 'session.type': 'file',
84
+
85
+ 'session.timeout': session_timeout,
86
+
87
+ 'session.cookie_expires': True,
88
+
89
+ 'session.data_dir': './data',
90
+
91
+ 'session.auto': True,
92
+
93
+ 'save_accessed_time': False
94
+
95
+ }
96
+
97
+
98
+
99
+ app = Bottle()
100
+
101
+ apps = SessionMiddleware(app, session_opts)
102
+
103
+ BASE_DIR = os.path.dirname(os.path.abspath(__file__))
104
+
105
+ TEMPLATE_PATH.append(BASE_DIR + "/views")
106
+
107
+
108
+
109
+ @app.route('/view_page/', method='GET')
110
+
111
+ def view_page():
112
+
113
+ check_login()
114
+
115
+ #user_id = int(request.forms.user_id)
116
+
117
+
118
+
119
+ import c_database
120
+
121
+
122
+
123
+ login = request.environ.get('beaker.session')
124
+
125
+ session_user_id=login.get('user_id')
126
+
127
+
128
+
129
+ db = c_database.connect_database()
130
+
131
+ connect = db[0]
132
+
133
+ cur = db[1]
134
+
135
+
136
+
137
+ sql = "SELECT uri, domain FROM user_domains WHERE user_id = %s"
138
+
139
+ cur.execute(sql, (session_user_id, ))
140
+
141
+ rows = cur.fetchone()
142
+
143
+ if isinstance(rows, type(None)) :
144
+
145
+ raise HTTPError(status=401, body="データは存在しません。")
146
+
147
+ else :
148
+
149
+ db_uri = rows[0]
150
+
151
+ db_domain = rows[1]
152
+
153
+
154
+
155
+ c_database.close_database(connect, cur)
156
+
157
+
158
+
159
+ return template('view_page', tp=BASE_DIR + "/views/", page_name='ページ表示',
160
+
161
+ uri=db_uri,
162
+
163
+ domain=db_domain)
164
+
165
+
166
+
167
+
168
+
169
+ def daemon_serv():
170
+
171
+ pid = os.fork()
172
+
173
+ try:
174
+
175
+ if pid != 0:
176
+
177
+ fd = open('./bottle.pid','w')
178
+
179
+ fd.write(str(pid) + '\n')
180
+
181
+ fd.close()
182
+
183
+ sys.exit()
184
+
185
+
186
+
187
+ except OSError as e:
188
+
189
+ sys.stderr.write("BottleFork: Failed: %d (%s)\n" % (e.errno, e.strerror))
190
+
191
+ sys.exit(1)
192
+
193
+
194
+
195
+ while 1:
196
+
197
+ web.serve(apps, host='localhost', port=8000,daemon_threads=False,threadpool_workers=10,use_threadpool=100)
198
+
199
+
200
+
201
+
202
+
203
+ if __name__ == "__main__":
204
+
205
+ daemon_serv()
206
+
207
+ ```
208
+
209
+ ■WEBからのアクセス
210
+
211
+ http://localhost:8000/view_page
212
+
213
+
214
+
215
+ ※コードは主要部分だけに加工しました
216
+
217
+
218
+
219
+ ■メモリについてはMonitという追加モジュールでプロセス管理をしておりまして、
220
+
221
+ Process 欄のメモリについて
222
+
223
+ memory 0.3% [101.9 MB]
224
+
225
+ memory total 0.3% [101.9 MB]
226
+
227
+
228
+
229
+ 処理ごとにmemory とmemory totalが 数十MBずつ増えていきます
230
+
231
+
232
+
37
- 宜しくお願いいたします
233
+ 以上、宜しくお願いします