Skip to main content

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for tomatolib, version 0.4.5
Filename, size File type Python version Upload date Hashes
Filename, size tomatolib-0.4.5.tar.gz (17.1 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page