上下文包在函数调用之间使用数据,使用计时器并为django记录它。

django-pyctx的Python项目详细描述


Django的Pyctx

django pyctx是一个上下文包,用于在函数调用之间使用数据、使用计时器并记录数据。

有关详细文档,请访问Wiki

快速启动

  1. django_pyctx添加到您的INSTALLED_APPS设置中,如下所示:

    INSTALLED_APPS=[#...,"django_pyctx",]
  2. django_pyctx.middlewares.requestctxmiddleware添加到这样的MIDDLEWARE设置中:

    MIDDLEWARE=["django_pyctx.middlewares.RequestCTXMiddleware",# ...,]

Please add "django_pyctx.middlewares.RequestCTXMiddleware" to at the beginning of the MIDDLEWARE list.

  1. 启动开发服务器并享受:)

示例用法

  • requestrequest.ctx

    可以在视图中访问RequestContext实例。
  • 基于django函数的示例view

    fromdjango.httpimportJsonResponsedefindex(request):y=5withrequest.ctx.log.timeit('index_timer'):request.ctx.log.set_data('isEven',y%2)request.ctx.log.set_data('y',y)request.ctx.log.start_timer('timer1')importtimetime.sleep(0.3)request.ctx.log.stop_timer('timer1')time.sleep(0.8)returnJsonResponse({})

你可以看到标准输出。您可能看到了这样的情况:

{"type":"REQ","ctxId":"a9b66113-aa96-4419-b9ec-961ce0ebf3ae","startTime":"2019-08-23 13:47:46.146172","endTime":"2019-08-23 13:47:47.258287","data":{"isEven":1,"y":5},"timers":{"ALL":1.112128,"request":1.112115,"index_timer":1.107513,"timer1":0.302767},"http":{"request":{"method":"GET","path":"/ctxtest","qs":"","full_path":"/ctxtest","is_secure":false,"is_xhr":false,"headers":{"Content-Length":"","Content-Type":"text/plain","Host":"localhost:8000","Connection":"keep-alive","Cache-Control":"max-age=0","Upgrade-Insecure-Requests":"1","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36","Sec-Fetch-Mode":"navigate","Sec-Fetch-User":"?1","Dnt":"1","Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3","Sec-Fetch-Site":"none","Accept-Encoding":"gzip, deflate, br","Accept-Language":"tr,en-GB;q=0.9,en;q=0.8,en-US;q=0.7","Cookie":"Pycharm-358d8f24=40efd37d-3767-43c2-8704-8abdbc8e441c; hblid=2S0d7GIKtYrYxbaF3m39N0M07TEBJbrW; olfsk=olfsk09308937734654421; Pycharm-358d92e3=f744a971-3d23-48a3-8188-7818d8efeb90; jenkins-timestamper-offset=-10800000; Pycharm-358d92e4=39469e28-3138-45a1-8133-16b05a158037; __test=1; csrftoken=qAbZmh519QGb6c1h702qe3YOtL8Q0ADakbXqqj4o5G5UznTybJVPigGG1mDBTtgP; Idea-535a2bcb=d87ec75d-65c5-46dd-a04b-6e914b434b5a; lang=en-US; iconSize=32x32; JSESSIONID.3e560a2e=node015mpq963ev6tulzcbplgyu8i1438.node0"}},"client":{"ip":"127.0.0.1","host":"","agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"},"status":{"code":200,"phrase":"OK"},"server":{"name":"1.0.0.127.in-addr.arpa","port":"8000"},"view":"run"}}

NOTE: this output formatted

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

推荐PyPI第三方库


热门话题
java将Int值传递给另一个类   在使用Sdin(或非交互式)输入| Java时调试奇怪的输入错误   java返回一个文本字符串作为响应struts2   java为什么我们不能在声明局部变量之前初始化它呢?   java从现有XML中读取值并将其填充到Json中   java Spring Boot+Maven:找不到repositoryFactoryBean   java使用regex表示“W o.Rd”。replaceAll(“单词”、“替换”)   java Sub resorce在Jersey REST API框架中不起作用   java在组件启动时,当所述报告存储在Sharepoint中时,是否可以加载预格式化的WebDataRocks报告?   java并发更新列表的最佳方法   servlets Java web应用程序对象调度   应用程序在点击按钮时崩溃,Android Studio(Java)   java如何为掷骰子游戏调用另一个类中的方法?