Skip to main content

FastWeb is a Python fast-building web frame refered by Tornado, Celery, Thrift

Project description

Fastweb - 高速迭代 · 快速试错
============================

|build-status|

依赖 ``Tornado`` ``Celery`` ``Thrift`` 开发的快速构建web应用的框架。

Web层示例
--------

.. code-block:: ini

;组件配置文件(component.ini)

;thrift rpc 组件配置
[tftrpc:hello_service]
host = localhost
port = 8888
thrift_module = gen-py-tornado.HelloService.HelloService
size = 10

;mysql组件配置
[mysql:test_mysql]
host = localhost
port = 3306
user = username
password = password
db = db_name
timeout = 5
charset=utf8
size=5
awake = 300

;mongo组件配置
[mongo:test_mongo]
host = localhost
port = 27017
timeout = 10

;redis组件配置
[redis:test_redis]
host = localhost
port = 6379
db = 1

;task组件配置
[task:test_task]
name = test_task
broker = amqp://guest:guest@localhost:5672//
backend = redis://localhost/0
task_class = some_tasks.add.Add
queue = test_task_queue
exchange = test_task_exchange
routing_key = test_task_routing_key

.. code-block:: python

"""handler(handler.test)"""

from fastweb import Request
from fastweb.web import Api, Page
from fastweb.web import coroutine, run_on_executor

class Test(Api):

@coroutine
@checkArgument(name=str, sex=int)
def get(self):

# 加载handler级别线程池
self.load_executor(5)
# handler级别线程池示例
r = yield self.test_executor()

# mysql使用示例
ret = yield self.test_mysql.query('select * from table limit 20;')
print(self.test_mysql.fetch())

# RPC使用示例
yield self.hello_service.sayHello()

# Redis使用示例
yield self.test_redis.call('set', 'name', 'jackson')

# Http请求示例
request = Request(method='GET', url='http://www.baidu.com')
ret = yield self.http_request(request)

# 任务调用示例
yield self.test_task.call_async(args=(101, 2))
x = yield self.test_task.call(args=(101, 2))

# response
self.end('SUC', log=False, **{'name':0})

# 在handler级别线程池中运行
@run_on_executor
def test_executor(self):
time.sleep(10)
return 1000

"""服务加载组件和启动"""

from fastweb.web import start_web_server
from fastweb.loader import app
from fastweb.pattern import SyncPattern, AsynPattern

if __name__ == '__main__':

options.parse_command_line()
app.load_recorder('app.log', system_level='DEBUG')
app.load_configuration(backend='ini', path='component.ini')
app.load_errcode()
app.load_component(pattern=AsynPattern, backend='ini', path=options.config)
app.load_component(pattern=AsynPattern, backend='ini', path='task.ini')

from handler.test import Test

handlers = [(r'/test', Test)]

start_web_server(6666, handlers, debug=True, xheaders=False)


Task层示例
---------

.. code-block:: ini

;task配置文件(task.ini)

;task组件配置
[task:test_task]
name = test_task
broker = amqp://guest:guest@localhost:5672//
backend = redis://localhost/0
task_class = some_tasks.add.Add
queue = test_task_queue
exchange = test_task_exchange
routing_key = test_task_routing_key

.. code-block:: python

class Add(object):
"""任务"""

def run(self, x, y):
return x+y

if __name__ == '__main__':
app.load_recorder('task.log', system_level='DEBUG')
app.load_component(pattern=AsynPattern, backend='ini', path='task.ini')
start_task_worker()

Service层示例
------------

请参考examples中示例。

安装
----

``python setup install``

``pip install fastweb``

适用场景
-------

Fastweb是一个快速构建web应用的框架,与Python的哲学相同,都是期望能够让使用者更快速的开发出满足需求的后端代码。
高速迭代,快速试错,这是使用Fastweb最大的效益!

抉择
----
关于为什么选择 ``Tornado`` ``Celery`` ``Thrift`` 作为Fastweb的工具集合中的重要成员。


.. |build-status| image:: https://travis-ci.org/BSlience/fastweb.svg?branch=master
:alt: Build status
:target: https://travis-ci.org/BSlience/fastweb

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

fastweb-1.5.0.21.tar.gz (51.4 kB view details)

Uploaded Source

File details

Details for the file fastweb-1.5.0.21.tar.gz.

File metadata

  • Download URL: fastweb-1.5.0.21.tar.gz
  • Upload date:
  • Size: 51.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for fastweb-1.5.0.21.tar.gz
Algorithm Hash digest
SHA256 e3e0b8d5471733e921082c5c89f31545030a5aece9f3ce3e2efc2f37101ddf57
MD5 d3982ac1ebfbc14c92869330b2e13f02
BLAKE2b-256 a4a62d9df70bc0898643646b4ab000bd1878a96b2fa8bf09246bc5e2f4f91f1d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page