Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Johan Ruuskanen
simple_vm_setup_xerces
Commits
bdde7cd0
Commit
bdde7cd0
authored
Oct 01, 2021
by
Johan Ruuskanen
Browse files
Add flask example with an asynchronous load generator
parent
82de7de1
Changes
4
Hide whitespace changes
Inline
Side-by-side
flask_server/load_generator.py
0 → 100644
View file @
bdde7cd0
import
aiohttp
import
asyncio
import
time
url
=
"http://129.192.81.161:5000/"
sleep_time
=
0.25
T_end
=
10
async
def
send_request
(
session
,
count
):
t_send
=
time
.
time
()
async
with
session
.
post
(
url
,
json
=
{
'sleep-time'
:
0.5
})
as
response
:
data
=
await
response
.
json
()
t_resp
=
time
.
time
()
print
(
"{}, resp: {}, rt: {:10.4f}"
.
format
(
count
,
\
data
[
'sleep-time-return'
],
t_resp
-
t_send
))
async
def
main
(
loop
):
async
with
aiohttp
.
ClientSession
()
as
session
:
tasks
=
set
()
t0
=
time
.
time
()
t_prev
=
t0
t
=
0
count
=
0
while
t
<
T_end
:
dt
=
time
.
time
()
-
t_prev
waittime
=
max
(
sleep_time
-
dt
,
0
)
await
asyncio
.
sleep
(
waittime
)
t_prev
=
time
.
time
()
tasks
.
add
(
loop
.
create_task
(
send_request
(
session
,
count
)))
count
+=
1
t
=
time
.
time
()
-
t0
await
asyncio
.
wait
(
tasks
)
if
__name__
==
'__main__'
:
loop
=
asyncio
.
get_event_loop
()
tasks
=
loop
.
run_until_complete
(
main
(
loop
))
flask_server/requirements_loadgen.txt
0 → 100644
View file @
bdde7cd0
aiohttp==3.6.2
asyncio==3.4.3
flask_server/requirements_server.txt
0 → 100644
View file @
bdde7cd0
flask==1.1.2
gunicorn==20.0.4
\ No newline at end of file
flask_server/server.py
0 → 100644
View file @
bdde7cd0
# To start as an FCFS queue, use
# gunicorn --bind 0.0.0.0:5000 server:app --log-level info --workers 1 --worker-class sync
#
# For more gunicorn worker settings, see https://docs.gunicorn.org/en/latest/design.html
import
time
from
flask
import
Flask
,
request
app
=
Flask
(
__name__
)
@
app
.
route
(
'/'
,
methods
=
[
'GET'
,
'POST'
])
def
main
():
if
request
.
method
==
'POST'
:
data
=
request
.
json
time
.
sleep
(
data
[
'sleep-time'
])
print
(
data
[
'sleep-time'
])
return
{
'sleep-time-return'
:
2
*
data
[
'sleep-time'
]}
return
'''
<!doctype html>
<title>A simple flask server</title>
<h1>A simple flask server</h1>
'''
if
__name__
==
"__main__"
:
app
.
run
(
host
=
'0.0.0.0'
,
port
=
5000
)
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment