Kamil Endruszkiewicz преди 7 години
родител
ревизия
51035538bc

+ 2 - 2
frameworks/Python/tornado/requirements_mongo.txt

@@ -1,2 +1,2 @@
-tornado==4.5.1
-motor==1.1
+tornado==5.0.1
+motor==1.2.1

+ 1 - 1
frameworks/Python/tornado/requirements_pg.txt

@@ -1,2 +1,2 @@
-tornado==4.5.1
+tornado==5.0.1
 Momoko==2.2.4

+ 1 - 1
frameworks/Python/tornado/server_pg.py

@@ -12,7 +12,7 @@ from commons import JsonHandler, JsonHelloWorldHandler, PlaintextHelloWorldHandl
 
 
 tornado.options.define('port', default=8888, type=int, help="Server port")
-tornado.options.define('postgres', default=None,
+tornado.options.define('postgres', default="localhost",
                        type=str, help="PostgreSQL host")
 tornado.options.define('backlog', default=8192, type=int,
                        help="Server backlog")

+ 11 - 10
frameworks/Python/tornado/server_py3.py

@@ -1,5 +1,5 @@
 #!/usr/bin/env python
-
+import asyncio
 import json
 import motor
 import tornado.ioloop
@@ -9,9 +9,6 @@ import tornado.httpserver
 from random import randint
 from tornado.options import options
 from commons import JsonHandler, JsonHelloWorldHandler, PlaintextHelloWorldHandler, HtmlHandler
-from tornado.ioloop import IOLoop
-
-IOLoop.configure('tornado.platform.asyncio.AsyncIOLoop')
 
 
 options.define('port', default=8888, type=int, help="Server port")
@@ -44,8 +41,10 @@ class MultipleQueriesHandler(JsonHandler):
                 queries = 500
 
         worlds = []
-        for future in [db.world.find_one(randint(1, 10000)) for _ in range(queries)]:
-            world = await future
+        futures, _ = await asyncio.wait([db.world.find_one(randint(1, 10000)) for _ in range(queries)])
+
+        for future in futures:
+            world = future.result()
 
             worlds.append({self.ID: int(world['_id']),
                     self.RANDOM_NUMBER: int(world[self.RANDOM_NUMBER])})
@@ -66,15 +65,17 @@ class UpdateHandler(JsonHandler):
                 queries = 500
 
         worlds = []
-        futures = [db.world.find_one(randint(1, 10000)) for _ in range(queries)]
+        updates = []
+        futures, _ = await asyncio.wait([db.world.find_one(randint(1, 10000)) for _ in range(queries)])
 
-        for world in futures:
-            world = await world
+        for future in futures:
+            world = future.result()
             new_value = randint(1, 10000)
-            await db.world.update_one({'_id': world['_id']}, {"$set": {self.RANDOM_NUMBER: new_value}})
 
+            updates.append(db.world.update_one({'_id': world['_id']}, {"$set": {self.RANDOM_NUMBER: new_value}}))
             worlds.append({self.ID: int(world['_id']),
                     self.RANDOM_NUMBER: world[self.RANDOM_NUMBER]})
+        await asyncio.wait(updates)
         self.finish(json.dumps(worlds))