123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- import os
- import sys
- import multiprocessing
- from wsgiref.handlers import format_date_time
- import japronto
- import ujson as json
- import random
- import asyncio
- import asyncpg
- db_pool = None
- async def db_setup():
- global db_pool
- db_pool = await asyncpg.create_pool(
- user = os.getenv('PGUSER', 'benchmarkdbuser'),
- password = os.getenv('PGPASS', 'benchmarkdbpass'),
- database = 'hello_world',
- host = 'tfb-database',
- port = 5432
- )
- READ_ROW_SQL = 'SELECT "randomnumber", "id" FROM "world" WHERE id = $1'
- def get_headers():
- return {
- 'Server': 'Japronto/0.1.2',
- 'Date': format_date_time(None),
- }
- # -----------------------------------------------------------------------------------
- def json_view(request):
- return request.Response(
- text = json.dumps( {'message': 'Hello, world!'} ),
- mime_type = 'application/json',
- headers = get_headers(),
- )
- def plaintext_view(request):
- return request.Response(
- body = b'Hello, world!',
- mime_type = 'text/plain',
- headers = get_headers(),
- )
- async def db_view(request):
- global db_pool
- row_id = random.randint(1, 10000)
- async with db_pool.acquire() as connection:
- number = await connection.fetchval(READ_ROW_SQL, row_id)
- text = json.dumps( {'id': row_id, 'randomNumber': number} )
- return request.Response(text = text, mime_type = 'application/json', headers = get_headers())
- # -----------------------------------------------------------------------------------
- app = japronto.Application()
- app.router.add_route('/json', json_view, 'GET')
- app.router.add_route('/plaintext', plaintext_view, 'GET')
- #app.router.add_route('/db', db_view, 'GET')
- #asyncio.set_event_loop(app.loop)
- #app.loop.run_until_complete(db_setup())
- # -----------------------------------------------------------------------------------
- if __name__ == '__main__':
- _is_travis = os.environ.get('TRAVIS') == 'true'
-
- workers = int( multiprocessing.cpu_count() )
- if _is_travis:
- workers = 2
- app.run('0.0.0.0', 8080, worker_num = workers)
|