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
|
||||
)
|
||||
session_setup(self, EncryptedCookieStorage(SESSION_KEY))
|
||||
self.tasks = []
|
||||
self._middlewares.append(session_middleware)
|
||||
self.jinja2_env.add_extension(MarkdownExtension)
|
||||
self.jinja2_env.add_extension(LinkifyExtension)
|
||||
@ -68,12 +69,28 @@ class Application(BaseApplication):
|
||||
self.jinja2_env.add_extension(EmojiExtension)
|
||||
|
||||
self.setup_router()
|
||||
|
||||
|
||||
self.cache = Cache(self)
|
||||
self.services = get_services(app=self)
|
||||
self.mappers = get_mappers(app=self)
|
||||
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):
|
||||
self.db.query("PRAGMA journal_mode=WAL")
|
||||
self.db.query("PRAGMA syncnorm=off")
|
||||
@ -89,6 +106,7 @@ class Application(BaseApplication):
|
||||
pass
|
||||
|
||||
await app.services.drive.prepare_all()
|
||||
self.loop.create_task(self.task_runner())
|
||||
|
||||
def setup_router(self):
|
||||
self.router.add_get("/", IndexView)
|
||||
|
@ -21,7 +21,10 @@ class ChatService(BaseService):
|
||||
|
||||
user = await self.services.user.get(uid=user_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"],
|
||||
html=channel_message["html"],
|
||||
user_uid=user_uid,
|
||||
@ -32,7 +35,5 @@ class ChatService(BaseService):
|
||||
username=user['username'],
|
||||
uid=channel_message['uid'],
|
||||
user_nick=user['nick']
|
||||
))
|
||||
channel['last_message_on'] = now()
|
||||
await self.services.channel.save(channel)
|
||||
return sent_to_count
|
||||
)))
|
||||
return True
|
||||
|
Loading…
Reference in New Issue
Block a user