Per-RPC retry support, used when subscribe() can't find an active instance.

This commit is contained in:
Ian Gulliver
2014-05-23 15:32:31 -07:00
parent ba82bf3dee
commit 1e91f5babb
2 changed files with 18 additions and 8 deletions

9
api.py
View File

@@ -27,10 +27,6 @@ from cosmopolite.lib import utils
import config
class InvalidInstanceID(Exception):
pass
def CreateChannel(google_user, client, instance_id, args):
models.Instance.FindOrCreate(instance_id)
@@ -84,7 +80,10 @@ def SendMessage(google_user, client, instance_id, args):
def Subscribe(google_user, client, instance_id, args):
instance = models.Instance.FromID(instance_id)
if not instance or not instance.active:
raise InvalidInstanceID
# Probably a race with the channel opening
return {
'result': 'retry',
}
subject = models.Subject.FindOrCreate(args['subject'])
messages = args.get('messages', 0)