小编oko*_*oko的帖子

Flask + Jinja:将数据传递给基本模板/所有模板

我有一个方法返回我的基本模板中需要的数据(全局页脚的内容).

如何(1)将变量传递给基本模板(其他模板扩展)或(2)将变量全局传递给所有模板而不在调用中明确添加它render_template

jinja2 flask

35
推荐指数
1
解决办法
1万
查看次数

主管 - 如何运行多个命令

我正在管理一个通过Supervisor处理队列的Celery工作者.

这是我的/etc/supervisor/celery.conf:

[program:celery]
command = /var/worker/venv/bin/celery worker -A a_report_tasks -Q a_report_process --loglevel=INFO
directory=/var/worker
user=nobody
numprocs=1
autostart=true
autorestart=true
startsecs=10
stopwaitsecs = 60
stdout_logfile=/var/log/celery/worker.log
stderr_logfile=/var/log/celery/worker.log
killasgroup=true
priority=998
Run Code Online (Sandbox Code Playgroud)

如何添加第二个命令来运行?

/var/worker/venv/bin/celery worker -A b_report_tasks -Q b_report_process --loglevel=INFO
Run Code Online (Sandbox Code Playgroud)

我尝试在同一行上分离两个命令&&(导致语法错误),向[program:celery]同一个文件添加一个完全独立的部分(导致只运行第一个),并celery1.conf在同一目录中创建一个完全不同的文件(导致只有原始/第一个正在运行).

python celery supervisord

20
推荐指数
1
解决办法
1万
查看次数

Bootstrap中的两个并排表

是否可以在Bootstrap 3中并排显示两个表?

每个尝试使每个col-md-6,虽然它缩小了宽度,但它们不会彼此相邻(而是在全宽视图中一个在另一个的顶部).

 <div class="table-responsive">
            <table class="table table-striped">
              <thead>
                <tr>
                  <th class="col-md-1">#</th>
                  <th class="col-md-2">Header</th>
                  <th class="col-md-3">Header</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td class="col-md-1">1,001</td>
                  <td class="col-md-2">1,001</td>
                  <td class="col-md-3">1,001</td>
                </tr>
                <tr>
                  <td class="col-md-1">1,001</td>
                  <td class="col-md-2">1,001</td>
                  <td class="col-md-3">1,001</td>
                </tr>
                 <tr>
                  <td class="col-md-1">1,001</td>
                  <td class="col-md-2">1,001</td>
                  <td class="col-md-3">1,001</td>
                </tr>
              </tbody>
            </table>
          </div>
          <h2 class="sub-header">Latest Incidents</h2>
          <div class="table-responsive">
            <table class="table table-striped">
              <thead>
                <tr>
                  <th class="col-md-1">#</th>
                  <th class="col-md-2">Header</th>
                  <th class="col-md-3">Header</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td class="col-md-1">1,001</td>
                  <td class="col-md-2">1,001</td>
                  <td class="col-md-3">1,001</td>
                </tr>
                <tr>
                  <td class="col-md-1">1,001</td>
                  <td class="col-md-2">1,001</td>
                  <td class="col-md-3">1,001</td> …
Run Code Online (Sandbox Code Playgroud)

twitter-bootstrap twitter-bootstrap-3

18
推荐指数
3
解决办法
4万
查看次数

如何在Flask中设置不同的子域(使用蓝图)?

我有一个在https://app.mydomain.com上运行的Flask应用程序.

蓝图看起来像这样:

app.register_blueprint(main)
app.register_blueprint(account, url_prefix='/account')
app.register_blueprint(users, url_prefix='/users')
app.register_blueprint(boxes, url_prefix='/boxes')
app.register_blueprint(api_1_0, url_prefix='/api/v1.0')
Run Code Online (Sandbox Code Playgroud)

网址如下所示:

我想将api_1_0路线从https://app.mydomain.com/api/v1.0移至https://api.mydomain.com,我该如何修改路线以及如何设置app.config['SERVER_NAME']

example.com(没有任何子域)完全是另一个站点,否则我会摆脱app子域.

所以,我希望app成为所有蓝图的默认子域,除了api_1_0应该是的api.

python flask flask-restful

16
推荐指数
1
解决办法
3349
查看次数

Asyncio中的请求 - 关键字参数

我正在使用asynciorequests模块发出异步HTTP请求.

我可以这样做一个GET请求:

@asyncio.coroutine
def do_checks():
    loop = asyncio.get_event_loop()
    req = loop.run_in_executor(None, requests.get, 'https://api.github.com/user')
    resp = yield from req
    print(resp.status_code)
loop = asyncio.get_event_loop()
loop.run_until_complete(do_checks())
Run Code Online (Sandbox Code Playgroud)

但是,我需要在请求中支持Basic HTTP Auth(此处描述).

根据文档,urlauth都是requests.get()的命名参数.

但是,如果我运行它(请注意添加url =''auth =''):

@asyncio.coroutine
def do_checks():
    loop = asyncio.get_event_loop()
    req = loop.run_in_executor(None, requests.get, url='https://api.github.com/user', auth=HTTPBasicAuth('user', 'pass'))
    resp = yield from req
    print(resp.status_code)
loop = asyncio.get_event_loop()
loop.run_until_complete(do_checks())
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

TypeError: run_in_executor() got an unexpected keyword argument 'url'
Run Code Online (Sandbox Code Playgroud)

在asyncio.run_in_executor()的原型中,支持其他参数:

BaseEventLoop.run_in_executor(executor, callback, *args) …
Run Code Online (Sandbox Code Playgroud)

python python-requests python-asyncio

12
推荐指数
2
解决办法
5726
查看次数

MongoDB中的条件分组

我在MongoDB中有一系列文档(检查事件),如下所示:

{
    "_id" : ObjectId("5397a78ab87523acb46f56"),
    "inspector_id" : ObjectId("5397997a02b8751dc5a5e8b1"),
    "status" : 'defect',
    "utc_timestamp" : ISODate("2014-06-11T00:49:14.109Z")
}

{
    "_id" : ObjectId("5397a78ab87523acb46f57"),
    "inspector_id" : ObjectId("5397997a02b8751dc5a5e8b2"),
    "status" : 'ok',
    "utc_timestamp" : ISODate("2014-06-11T00:49:14.109Z")
}
Run Code Online (Sandbox Code Playgroud)

我需要得到一个如下所示的结果集:

[
  {
    "date" : "2014-06-11",
    "defect_rate" : '.92' 
  },  
  {
    "date" : "2014-06-11",
    "defect_rate" : '.84' 
  }, 
]
Run Code Online (Sandbox Code Playgroud)

换句话说,我需要每天获得平均缺陷率.这可能吗?

mongodb mongodb-query aggregation-framework

11
推荐指数
1
解决办法
2万
查看次数

aiohttp - 异常忽略的消息

我正在运行以下代码,通过aiohttp发出5个请求:

import aiohttp
import asyncio

def fetch_page(url, idx):
    try:
        url = 'http://google.com'
        response = yield from aiohttp.request('GET', url)

        print(response.status)
    except Exception as e:
        print(e)

def main():
    try:
        url = 'http://google.com'
        urls = [url] * 5

        coros = []
        for idx, url in enumerate(urls):
            coros.append(asyncio.Task(fetch_page(url, idx)))

        yield from asyncio.gather(*coros)
    except Exception as e:
        print(e)

if __name__ == '__main__':
    try:
        loop = asyncio.get_event_loop()
        loop.run_until_complete(main())
    except Exception as e:
        print(e)
Run Code Online (Sandbox Code Playgroud)

输出:

200
200
200
200
200
Exception ignored in: Exception ignored in: Exception …
Run Code Online (Sandbox Code Playgroud)

python python-3.x python-asyncio aiohttp

10
推荐指数
1
解决办法
2406
查看次数

我怎么知道MongoDB是否需要更多CPU/RAM?

我有一台运行在便宜的Linux VPS(1 x 2.0GHz CPU和1GB RAM)上的MongoDB服务器.

现在已经有一天了,产量db.stats()看起来很合理.

db.stats()
{
        "db" : "app",
        "collections" : 11,
        "objects" : 2067,
        "avgObjSize" : 238.20416061925496,
        "dataSize" : 492368,
        "storageSize" : 1007616,
        "numExtents" : 18,
        "indexes" : 9,
        "indexSize" : 138992,
        "fileSize" : 16777216,
        "nsSizeMB" : 16,
        "dataFileVersion" : {
                "major" : 4,
                "minor" : 5
        },
        "extentFreeList" : {
                "num" : 5,
                "totalSize" : 286720
        },
        "ok" : 1
}
Run Code Online (Sandbox Code Playgroud)

我可以预测直到超出磁盘空间的天数.

我知道(来自常见问题解答)"MongoDB自动使用机器上的所有可用内存作为缓存."

  1. 我该如何确定是否需要更多RAM或CPU容量?

  2. 虽然它依赖于应用程序,但RAM或CPU通常更重要吗?

  3. 有什么东西归还db.runCommand( { serverStatus: 1, workingSet: …

linux mongodb

9
推荐指数
1
解决办法
7249
查看次数

Python的imaplib是否允许您设置超时?

我正在寻找Python的imaplib的API .

据我所知,没有办法像smtplib一样设置超时.

那是对的吗?如果您不希望它阻止,您将如何处理无效的主机?

python imaplib

9
推荐指数
1
解决办法
3808
查看次数

Asyncio使HTTP请求更慢?

我正在使用Asyncio和Requests来对一系列HTTP请求进行基准测试.

出于某种原因,使用Asyncio比使用直接请求稍慢.知道为什么吗?我是否错误地使用Asyncio?

import asyncio
import functools
import requests
import time

ts = time.time()
for i in range(10):
  @asyncio.coroutine
  def do_checks():
      loop = asyncio.get_event_loop()
      req = loop.run_in_executor(None, functools.partial(requests.get, "http://google.com", timeout=3))
      resp = yield from req
      print(resp.status_code)

  loop = asyncio.get_event_loop()
  loop.run_until_complete(do_checks())
te = time.time()
print("Version A: " + str(te - ts))

ts = time.time()
for i in range(10):
  r = requests.get("http://google.com", timeout=3)
  print(r.status_code)
te = time.time()

print("Version B:  " + str(te - ts))
Run Code Online (Sandbox Code Playgroud)

输出:

版本A = Asyncio; 版本B =请求

200
200
200 …
Run Code Online (Sandbox Code Playgroud)

python performance benchmarking python-3.x python-asyncio

7
推荐指数
2
解决办法
1710
查看次数