def init(loop):
# Middlewares
middlewares = [
session_middleware(RedisStorage(await aioredis.create_pool((config.redis_ip, 6379)), cookie_name='w')),
error_middleware,
maintain_middleware,
]
# init server
app = web.Application(loop=loop,
middlewares=middlewares)
redis = await aioredis.create_redis((config.redis_ip, config.redis['port']), loop=loop)
app.redis = RedisFilter(redis)
# Register admin account
if await app.redis.get('User') is None:
await app.redis.set('SecretKey', os.urandom(16), many=False)
config.admin['password'] = await encrypt(app.redis, config.admin['password'])
config.admin['permission'] = 0x0f
await app.redis.set('User', config.admin, many=False)
# Init Profile
if await app.redis.get('Profile') is None:
await app.redis.set('Profile', {
'name': config.rss['author'],
'link_desc': '',
'text': ''
}, many=False)
# Security
setup_security(app,
SessionIdentityPolicy(),
RedisAuthorizationPolicy(redis))
await compass(app.router)
CONST.CATEGORY = await app.redis.get('Categories') or []
aiohttp_jinja2.setup(app, loader=jinja2.FileSystemLoader(config.template_addr))
_handler = app.make_handler(
access_log=logger,
access_log_format=formatters
)
_srv = await loop.create_server(_handler, config.server['host'], config.server['port'])
print('Server started at http://%s:%s...' % (config.server['host'], config.server['port']))
return _srv, _handler, app
评论列表
文章目录