use uWSGIs locking

legacy/0.2
Martin Zimmermann 11 years ago
parent 9a8e0b524e
commit 55b6b283b8

@ -3,7 +3,6 @@ http = :8080
master = true
processes = 4
spooler = %v/mail
queue = 1
module = isso
virtualenv = .
env = ISSO_SETTINGS=%v/sample.cfg

@ -197,13 +197,10 @@ class uWSGIMixin(Mixin):
class Lock():
def __enter__(self):
while uwsgi.queue_get(0) == "LOCK":
time.sleep(0.01)
uwsgi.queue_set(0, "LOCK")
uwsgi.lock()
def __exit__(self, exc_type, exc_val, exc_tb):
uwsgi.queue_pop()
uwsgi.unlock()
def spooler(args):
try:

@ -70,23 +70,20 @@ def new(app, environ, request, uri):
data['mode'] = (app.conf.getboolean('moderation', 'enabled') and 2) or 1
data['remote_addr'] = utils.anonymize(str(request.remote_addr))
# extract site's <h1> title
if uri not in app.db.threads:
for host in app.conf.getiter('general', 'host'):
resp = http.curl('HEAD', host, uri)
if resp and resp.status == 200:
title = parse.title(resp.read())
break
else:
return Response('URI does not exist', 404)
else:
title = app.db.threads[uri].title
with app.lock:
if uri not in app.db.threads:
app.db.threads.new(uri, title)
for host in app.conf.getiter('general', 'host'):
resp = http.curl('HEAD', host, uri)
if resp and resp.status == 200:
title = parse.title(resp.read())
break
else:
return Response('URI does not exist', 404)
logger.info('new thread: %s -> %s', uri, title)
app.db.threads.new(uri, title)
logger.info('new thread: %s -> %s', uri, title)
else:
title = app.db.threads[uri].title
try:
with app.lock:

Loading…
Cancel
Save