A quick and lightweight server framework.
Project description
======================================== Asynchronous server component library
.. image:: https://travis-ci.org/tangmi001/tomatolib.svg?branch=master :target: https://travis-ci.org/tangmi001/tomatolib :alt: Travis status for master branch
.. image:: https://codecov.io/gh/tangmi001/tomatolib/branch/master/graph/badge.svg :target: https://codecov.io/gh/tangmi001/tomatolib :alt: Codecov
.. image:: https://img.shields.io/github/license/tangmi001/tomatolib.svg :target: https://github.com/tangmi001/tomatolib/blob/master/LICENSE :alt: License
.. image:: https://img.shields.io/pypi/v/tomatolib.svg :target: https://pypi.org/project/tomatolib :alt: PyPI
Features
- Manage common modules (MySQLModule, HttpServerModule) with Application class.
- Web routing configures the handler through the decorator.
- SQL normalization, avoiding heavy ORM, while also making readability.
Getting started
Server
An example using a server:
.. code-block:: python
# hello_handler.py
from aiohttp import web
from tomato.transport.http import Routes
routes = Routes()
@routes.get('/hello')
@routes.get('/hello/{name}')
async def xxx(request):
name = request.match_info.get('name', "Anonymous")
text = "Hello, " + name
return web.Response(text=text)
.. code-block:: python
# hello.py
from hello_handler import routes
from tomato.util import Application
from tomato.transport import HttpServerModule
app = Application()
app['http_server'] = HttpServerModule(host='localhost', port=1024, routes_list=[routes, ])
# app.run()
# app.stop()
app.run_forever()
MySQL
.. code-block:: python
import asyncio
from tomato.util import Application
from tomato.store import MySQLModule
from tomato.store import SqlClauseAssemble
from tomato.store import SqlParamCollections
app = Application()
# setting parameter is a dictionary type
app['mysql'] = MySQLModule(setting=mysql_setting)
app.run()
sql_assemble = SqlClauseAssemble()
sql_assemble.wanted_words = ['platform_id', 'open_id']
sql_assemble.table_name = '`app_account_users`'
where_params = SqlParamCollections()
where_params.add_normal_param(('open_id', '=', 18888888888, True))
sql_assemble.where_params = where_params
(sql, params) = sql_assemble.get_query_clause()
print((sql, params))
loop = asyncio.get_event_loop()
result_list = loop.run_until_complete(app['mysql'].get_all(sql,params))
print(result_list)
app.stop()
Redis
.. code-block:: python
from tomato.util import Application
from tomato.store import RedisModule
app = Application()
app['redis'] = RedisModule(setting=redis_setting)
app.run()
redis = RedisController()
loop = asyncio.get_event_loop()
loop.run_until_complete(redis.set('my-key', 'my-value'))
assert loop.run_until_complete(redis.get('my-key')) == 'my-value'
app.stop()
Example
-
server <https://github.com/tangmi001/tomatolib/tree/master/examples>
_ -
mysql <https://github.com/tangmi001/tomatolib/blob/master/tomato/store/mysql/sql_clause_assemble.py>
_
Dependent library
aiohttp <https://github.com/aio-libs/aiohttp>
_
Other contributors
- zhouqinmin: zqm175899960@163.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file tomatolib-0.4.5.tar.gz
.
File metadata
- Download URL: tomatolib-0.4.5.tar.gz
- Upload date:
- Size: 17.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.5.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
cc1e49be2d443c704adfcc3141bdaf7d07c4feaddea8fac59baa78e99f38e34a
|
|
MD5 |
879fb4fc70e2cc9bdc3aff0e2019d568
|
|
BLAKE2b-256 |
4c5e6198dbffaf90a7f9c287d28b43167aa45e1c42e5468a120d414e2f4eefa4
|