金字塔包的Web应用程序管理器

ines的Python项目详细描述


INES

一个由棱锥体构成的可扩展包(参见http://www.pylonsproject.org/) 关联多个应用程序。

示例

from ines.api import BaseAPISession
# Register APP one internal API
class OneSession(BaseAPISession):
    __app_name__ = 'app_one'  # This is required when you have multiple app in one package
    def some_method(self):
        return u'Method of app ONE called'
# Register two APP internal API
class TwoSession(BaseAPISession):
    __app_name__ = 'app_two'
    def some_method(self):
        return u'Method of app TWO called'

from ines.config import APIConfigurator
# Start APPS config
config_one = APIConfigurator(
    application_name='app_one',
    settings={'api.extension.session_path': OneSession})
config_two = APIConfigurator(
    application_name='app_two',
    settings={'api.extension.session_path': TwoSession})

from ines.view import api_config
# Add route / view for app one
config_one.add_routes(('one_app_home', ''))
@api_config(route_name='one_app_home')
def one_app_home(context, request):
    # Here we call the two APP method
    return {
        'two_app': request.api.applications.app_two.some_method(),
        'one_app': request.api.applications.app_one.some_method(),
        'one_app_direct': request.api.some_method()}
# Add route / view for app two
config_two.add_routes(('one_app_home', ''))
@api_config(route_name='one_app_home')
def one_app_home(context, request):
    # Here we call the two APP method
    return {
        'one_app': request.api.applications.app_one.some_method(),
        'two_app': request.api.applications.app_two.some_method(),
        'two_app_direct': request.api.some_method()}

# Create pyramid wsgi middleware and start server
from wsgiref.simple_server import make_server
from paste.urlmap import URLMap
from ines.wsgi import not_found_api_application
urlmap = URLMap(not_found_app=not_found_api_application({}))
urlmap['/one'] = config_one.make_wsgi_app()
urlmap['/two'] = config_two.make_wsgi_app()
server = make_server('0.0.0.0', 6543, urlmap)
server.serve_forever()

0.1(未发布)

功能

  • 添加单元测试
  • 添加文档
  • 添加INES翻译

0.1(未发布)

功能

  • 添加单元测试
  • 添加文档
  • 添加INES翻译

0.1a2(2015-06-20)

功能

  • utils.make_unique_hash现在接收一个length属性
  • 已将位于request.cache的请求缓存更改为request.session_cache
  • 已将位于request.fcache的文件系统缓存更改为request.cache
  • 新函数utils.remove_file用于删除系统文件,忽略一些错误(带有重试循环)
  • 新函数utils.move_file用于移动文件而忽略某些系统错误
  • 新函数convert.make_sha256_no_cache忽略convert.make_sha256缓存系统
  • 新函数utils.get_file_binary用于获取文件二进制文件,忽略某些系统错误
  • 新函数utils.put_binary_on_file用于写入/附加忽略某些系统错误的文件
  • 新函数utils.put_binary_on_file用于写入/附加忽略某些系统错误的文件
  • 新函数system.thread_is_running用于检查正在运行的线程,使用system.register_thread注册或使用system.start_system_thread启动
  • 新函数convert.convert_timezoneupdate datetime值到所选时区
  • 新函数^ {Tt18}$,如果存在,将值转换为字符串,否则返回^ {Tt19}$$/LI>
  • 新函数utils.path_unique_code使用SHA256创建文件路径唯一代码
  • 新函数utils.file_unique_code使用sha256创建文件唯一代码
  • 新函数utils.string_unique_code使用sha256创建字符串唯一代码
  • 新函数mimetype.find_mimetype使用文件名和/或文件二进制查找mimemtype
  • 新的sql filter函数api.database.sql.date_in_period_filter用于创建一个sqlalchemy过滤器以在一段时间内查找项
  • 新的缓存类型cache.SaveMeMemcached使用memcached系统
  • 新锁类型cache.LockMeMemcached使用memcached系统
  • 使用repoze.lru.LRUCache
  • 提高convert.make_sha256速度
  • 使用repoze.lru.LRUCache
  • 提高cache.CacheMe.get_file_path速度
  • 使用repoze.lru.LRUCache
  • 提高locks.LockMe.get_file_path速度
  • 使用repoze.lru.LRUCache
  • 提高convert.camelcase速度
  • 使用repoze.lru.LRUCache
  • 提高convert.uncamelcase速度
  • 添加到authentication.AuthenticatedSessionis_useris_apikey
  • 的新属性
  • 向ines.api.core添加了ORM查询
  • 新模块api.policy.BaseTokenPolicySession。使用令牌进行身份验证的助手
  • 新模块api.mailer。SMTP邮件程序的帮助程序。
  • 新方法api.route_url。创建应用程序路由url,如request.route url

错误修复

  • 处理IOError.errnoOSError.errno不要忽略它们

向后不兼容

  • ines现在需要sqlalchemy>;=1.0.0
  • api_cache_decorator现在接收参数expire_cache以删除保存的信息,而不是expire
  • locks.LockTimeout移动到exceptions.LockTimeout
  • locks.remove_file_quietly移动到utils.remove_file_quietly
  • cache.make_dir移动到utils.make_dir
  • locks.LockMe现在接收参数path,而不是lock_path
  • locks.LockMe.clean_junk_locks不接收任何参数。改用locks.LockMe.clean_junk_locks_as_daemon
  • api.database.BaseSQLSessionManager移动到api.database.sql.BaseSQLSessionManager
  • api.database.BaseSQLSession移动到api.database.sql.BaseSQLSession
  • api.database.sql.BaseDatabaseSessionManager移动到api.database.BaseDatabaseSessionManager
  • api.database.sql.BaseDatabaseSession移动到api.database.BaseDatabaseSession
  • ines不再依赖于repoze.tm2。如果使用ines.middleware.repozerm.RepozeTMMiddlewareines.api.database.sql.BaseSQLSessionManagerines.api.core.BaseCoreSessionManagerines.api.database.sql.BaseSQLSessionines.api.core.BaseCoreSession,则需要在设置要求中定义repoze.tm2
  • ines不再依赖于transaction。如果使用ines.api.database.sql.BaseDatabaseSessionManagerines.api.core.BaseCoreSessionManagerines.api.database.sql.BaseSQLSessionines.api.core.BaseCoreSession,则需要在设置要求中定义transaction
  • ines不再依赖于zope.sqlalchemy。如果要继续将其用作sqlalchemy会话扩展,则需要在配置设置(如sql.session_extension=zope.sqlalchemy:zopetransactionextension)上定义它,并在设置要求中定义zope.sqlalchemy
  • ines.api.*.settings现在读取全局设置以ines.api.*开头的s键。.\uuu api\u name\uu

依赖性

  • ines现在依赖于repoze.lru
  • ines现在依赖于venusian

0.1a1(2015-05-06)

  • 初次发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java同步块与私有不可变对象和同步方法的差异   OracleDataSource、OracleUCP、Commons DBCP和Tomcat连接池之间的java差异?   java在文本文件中写入对象   java访问web服务   如何用java代码并行读取拼花地板文件   spring是否可以将运行时未知的Avro消息转换为特定的Java类   具有复杂对象的java Spring数据MongoDB addToSet()   java ArrayList是否删除元素,是否向下移动列表?   Vaadin中按钮的java多行标题不起作用   java为什么要使用@PropertySource而不是PropertyPlaceHolderConfigure?   java如何检查网站链接是否有数据(图片)或网站是否无效?   java如何禁用对jsp页面的直接访问?   用java实现matlab递归文件夹读取。伊奥。文件   为什么是java。伊奥。FileDescriptor的构造函数是公共的吗?   在java中关闭扫描程序时无法访问的代码?   搜索Java模拟退火接受概率