Transactions.
This commit is contained in:
parent
13ce09a5c5
commit
145373399d
@ -61,6 +61,7 @@ class Application(BaseApplication):
|
|||||||
middlewares=middlewares, template_path=self.template_path, *args, **kwargs
|
middlewares=middlewares, template_path=self.template_path, *args, **kwargs
|
||||||
)
|
)
|
||||||
session_setup(self, EncryptedCookieStorage(SESSION_KEY))
|
session_setup(self, EncryptedCookieStorage(SESSION_KEY))
|
||||||
|
self.tasks = []
|
||||||
self._middlewares.append(session_middleware)
|
self._middlewares.append(session_middleware)
|
||||||
self.jinja2_env.add_extension(MarkdownExtension)
|
self.jinja2_env.add_extension(MarkdownExtension)
|
||||||
self.jinja2_env.add_extension(LinkifyExtension)
|
self.jinja2_env.add_extension(LinkifyExtension)
|
||||||
@ -68,12 +69,28 @@ class Application(BaseApplication):
|
|||||||
self.jinja2_env.add_extension(EmojiExtension)
|
self.jinja2_env.add_extension(EmojiExtension)
|
||||||
|
|
||||||
self.setup_router()
|
self.setup_router()
|
||||||
|
|
||||||
self.cache = Cache(self)
|
self.cache = Cache(self)
|
||||||
self.services = get_services(app=self)
|
self.services = get_services(app=self)
|
||||||
self.mappers = get_mappers(app=self)
|
self.mappers = get_mappers(app=self)
|
||||||
self.on_startup.append(self.prepare_database)
|
self.on_startup.append(self.prepare_database)
|
||||||
|
|
||||||
|
async def create_task(self, task):
|
||||||
|
self.tasks.append(task)
|
||||||
|
|
||||||
|
async def task_runner(self):
|
||||||
|
while True:
|
||||||
|
await asyncio.sleep(0.1)
|
||||||
|
task = None
|
||||||
|
try:
|
||||||
|
task = self.tasks.pop(0)
|
||||||
|
except IndexError:
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
await task
|
||||||
|
except:
|
||||||
|
print(ex)
|
||||||
|
|
||||||
async def prepare_database(self,app):
|
async def prepare_database(self,app):
|
||||||
self.db.query("PRAGMA journal_mode=WAL")
|
self.db.query("PRAGMA journal_mode=WAL")
|
||||||
self.db.query("PRAGMA syncnorm=off")
|
self.db.query("PRAGMA syncnorm=off")
|
||||||
@ -89,6 +106,7 @@ class Application(BaseApplication):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
await app.services.drive.prepare_all()
|
await app.services.drive.prepare_all()
|
||||||
|
self.loop.create_task(self.task_runner())
|
||||||
|
|
||||||
def setup_router(self):
|
def setup_router(self):
|
||||||
self.router.add_get("/", IndexView)
|
self.router.add_get("/", IndexView)
|
||||||
|
@ -21,7 +21,10 @@ class ChatService(BaseService):
|
|||||||
|
|
||||||
user = await self.services.user.get(uid=user_uid)
|
user = await self.services.user.get(uid=user_uid)
|
||||||
await self.services.notification.create_channel_message(channel_message_uid)
|
await self.services.notification.create_channel_message(channel_message_uid)
|
||||||
sent_to_count = await self.services.socket.broadcast(channel_uid, dict(
|
channel['last_message_on'] = now()
|
||||||
|
await self.services.channel.save(channel)
|
||||||
|
|
||||||
|
await self.app.create_task(self.services.socket.broadcast(channel_uid, dict(
|
||||||
message=channel_message["message"],
|
message=channel_message["message"],
|
||||||
html=channel_message["html"],
|
html=channel_message["html"],
|
||||||
user_uid=user_uid,
|
user_uid=user_uid,
|
||||||
@ -32,7 +35,5 @@ class ChatService(BaseService):
|
|||||||
username=user['username'],
|
username=user['username'],
|
||||||
uid=channel_message['uid'],
|
uid=channel_message['uid'],
|
||||||
user_nick=user['nick']
|
user_nick=user['nick']
|
||||||
))
|
)))
|
||||||
channel['last_message_on'] = now()
|
return True
|
||||||
await self.services.channel.save(channel)
|
|
||||||
return sent_to_count
|
|
||||||
|
Loading…
Reference in New Issue
Block a user