]> git.dolda2000.com Git - ashd.git/commitdiff
python: Properly abort when over request limit.
authorFredrik Tolf <fredrik@dolda2000.com>
Sat, 19 Jan 2013 00:17:49 +0000 (01:17 +0100)
committerFredrik Tolf <fredrik@dolda2000.com>
Sat, 19 Jan 2013 00:17:49 +0000 (01:17 +0100)
python/ashd-wsgi
python/ashd/serve.py
python3/ashd-wsgi3
python3/ashd/serve.py

index 807fe2b8ca976369fcde93721e602f21444ad151..01c158f74fc47f0ccff95ff24eab73028c3da263 100755 (executable)
@@ -146,7 +146,7 @@ def mkenv(req):
     return env
 
 if reqlimit != 0:
-    guard = ashd.serve.calllimiter(reqlimit).call
+    guard = ashd.serve.abortlimiter(reqlimit).call
 else:
     guard = lambda fun: fun()
 
index 4d5d9caf9ebbd61721f89ac86c1059fecaf80484..14170d7c87cc5e3b6d3ce84050161f26c50fadae 100644 (file)
@@ -1,4 +1,4 @@
-import threading, time, logging
+import os, threading, time, logging
 
 log = logging.getLogger("ashd.serve")
 seq = 1
@@ -125,3 +125,8 @@ class calllimiter(object):
             return target()
         finally:
             self.__exit__()
+
+class abortlimiter(calllimiter):
+    def waited(self, time):
+        if time > 10:
+            os.abort()
index db54e6e6876090122f6fbb152b470c6e89074d62..ba7038d422815d64084507adeb369e8fe8fbe7bd 100755 (executable)
@@ -146,7 +146,7 @@ def mkenv(req):
     return env
 
 if reqlimit != 0:
-    guard = ashd.serve.calllimiter(reqlimit).call
+    guard = ashd.serve.abortlimiter(reqlimit).call
 else:
     guard = lambda fun: fun()
 
index 9f9fe7fe04388a896f78927004c72bc479843e95..fe839a2ba442904bc362e92fa16208c97c515df4 100644 (file)
@@ -1,4 +1,4 @@
-import threading, time, logging
+import os, threading, time, logging
 
 log = logging.getLogger("ashd.serve")
 seq = 1
@@ -113,3 +113,8 @@ class calllimiter(object):
     def call(self, target):
         with self:
             return target()
+
+class abortlimiter(calllimiter):
+    def waited(self, time):
+        if time > 10:
+            os.abort()