小编met*_*rsk的帖子

使用aiohttp的Python 3.6异步GET请求正在同步运行

我有以下功能正常,但由于某种原因,请求似乎是同步执行,而不是异步.

我现在的假设是,由于for record in recordsmain函数中的for循环,这种情况正在发生,但我不知道如何更改它以便请求可以执行异步.如果不是这样,我还需要改变什么呢?

async def do_request(query_string):
        base_url = 'https://maps.googleapis.com/maps/api/place/textsearch/json?'
        params = {'key': google_api_key,
                  'query': query_string}
        async with aiohttp.ClientSession() as session:
            async with session.request('GET', base_url, params=params) as resp:
                return resp


async def main():
    create_database_and_tables()
    records = prep_sample_data()[:100]

    for record in records:
        r = Record(record)

        if not r.is_valid:
            continue

        query_string = r.generate_query_string()

        resp = await do_request(query_string)
        print("NOW WRITE TO DATABASE")

if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())
Run Code Online (Sandbox Code Playgroud)

python http python-3.x python-asyncio aiohttp

4
推荐指数
1
解决办法
1327
查看次数

使用分块将 Pandas DataFrame 写入字符串缓冲区

我有一个 10k 行的 csv,我想以 1k 行的块写入 s3。

from io import StringIO

import pandas as pd

csv_buffer = StringIO()
df.to_csv(csv_buffer, chunksize=1000)
s3_resource = boto3.resource('s3')
s3_resource.Object(bucket, 'df.csv').put(Body=csv_buffer.getvalue())
Run Code Online (Sandbox Code Playgroud)

这给了我要写入 s3 的字符串缓冲区中的前 1k 行,但似乎 csv 缓冲区不是我可以循环的迭代器。

有谁知道如何实现这一目标?

python amazon-s3 pandas

3
推荐指数
1
解决办法
3489
查看次数

Flask 应用程序在外部文件中时不执行 javascript

我有包含我的 CSS 和 JS 的 HTML 文件。在创建我的 Flask 应用程序时,我决定将 CSS 和 JS 分开,以将文件分开放在一个静态目录中。

当我在一个 HTML 文件中包含所有内容时,一切都按预期工作,但是当 CSS 和 JS 位于单独的文件中时,部分 JS 不会执行。

这是我在 HTML 文件中的导入:

<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <script type="text/javascript" src="{{ url_for('static', filename='scripts/main.js') }}"></script>
    <link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.4.2/pure-min.css">
    <link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}">
</head>
Run Code Online (Sandbox Code Playgroud)

这是独立 JS 文件的内容:

$('#user_button').click(function(event) {
    $("#user_id").html($('option:selected').html());
    $('.button_div').show();
});

var prodData = [];
var boughtProds = [];

$('.prod_button').click(function(event) {

    if (boughtProds.indexOf($(this).data('name')) == -1) {
        prodData.push({
            name: $(this).data('name'),
            price: $(this).data('price'),
            quantity: 1,
        });
        boughtProds.push($(this).data('name'));
    } else {
        prodData[boughtProds.indexOf($(this).data('name'))].quantity …
Run Code Online (Sandbox Code Playgroud)

javascript python jquery flask

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

Jquery .click不会控制日志或警报

我有以下jquery:

$(".order_submit").click(function() {
  alert( "Alert" );
  console.log("TEST")
});
Run Code Online (Sandbox Code Playgroud)

当我将该功能放入控制台时,我得到以下内容:

$(".order_submit").click(function() {
  alert( "Alert" );
  console.log("TEST")
});
[
<input id=?"order_button" type=?"button" class=?"order_submit" value=?"Submit Order">?
]
Run Code Online (Sandbox Code Playgroud)

该按钮是通过此javascript创建的:

var total = 0;
    for (var x in prodData) total += prodData[x].price * prodData[x].quantity
    total = Math.round(total * 100) / 100
    var subtotal = '<tr><td><input id="order_button" type="button" class="order_submit" value="Submit Order"></td><td>Subtotal</td><td>$' + total + '</td></tr>';
Run Code Online (Sandbox Code Playgroud)

这与它有什么关系吗?

javascript jquery

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

如何使用flask.jsonify并在烧瓶路径中渲染模板

是否可以渲染模板并flask.jsonify在同一路线中使用?

@app.route('/thankyou')
def thankyou():
    db = get_db()
    summary_cursor = db.execute('SELECT * FROM orders JOIN order_items USING (transaction_id) WHERE orders.transaction_id = (SELECT MAX(transaction_id) FROM orders)')
    summary = summary_cursor.fetchall()
    data = map(list, summary)
    print data
    return render_template('thankyou.html', summary = json.dumps(data))
Run Code Online (Sandbox Code Playgroud)

现在我正在使用json.dumps序列化我的数据,但它做了一些奇怪的事情.我想使用jsonify,因为当我这样做时,我得到一个非常漂亮的输出,似乎更好地使用:

@app.route('/thankyou')
def thankyou():
    db = get_db()
    summary_cursor = db.execute('SELECT * FROM orders JOIN order_items USING (transaction_id) WHERE orders.transaction_id = (SELECT MAX(transaction_id) FROM orders)')
    summary = summary_cursor.fetchall()
    data = map(list, summary)
    print data
    return jsonify(summary = …
Run Code Online (Sandbox Code Playgroud)

python json flask

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

带有时区转换的 Pandas 日期时间格式

我有一个 sqlite 数据库,其中每一行在 EST 中都有一个 unix 时间戳。改变这个是不可能的。我将这些数据放入一个熊猫数据框中。

我在 UTC 的服务器上运行脚本,当我将 EST 时间戳转换为日期时间对象时,我无法捕获 EST 时间的全天,因为它向前移动了 4 小时,如下所示:

df['time'] = pd.to_datetime(df['time'], unit='s').dt.date
Run Code Online (Sandbox Code Playgroud)

有没有办法在 Pandas 中进行时区转换,以便基于 EST unix 时间创建日期时间对象?

python timezone datetime pandas

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

按数据帧计算分类数据pandas组

我有一个如下所示的数据框:

+---+-----------+----------------+-------+
|   |    uid    |      msg       | count |
+---+-----------+----------------+-------+
| 0 | 121437681 | eis            |     1 |
| 1 |  14403832 | eis            |     1 |
| 2 | 190442364 | eis            |     1 |
| 3 | 190102625 | eis            |     1 |
| 4 | 190428772 | eis_reply      |     1 |
| 5 | 190428772 | single_message |     1 |
| 6 | 190428772 | yes            |     1 |
| 7 | 190104837 | eis …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

计算灵丹妙药中的自然数

我正在阅读Elixir in Action一书,我有点难以理解以下示例的工作原理.

defmodule NaturalNums do
  def print(1), do: IO.puts(1)

  def print(n) do
    print(n - 1)
    IO.puts(n)
  end
end
Run Code Online (Sandbox Code Playgroud)

给出这个输出:

iex(2)> NaturalNums.print(3)
1
2
3
Run Code Online (Sandbox Code Playgroud)

我感到困惑的是这个模块如何从1开始向上计数而不是从3向下计数.不应该先打印3然后打印2然后打1?1是最后一个因为它停止了递归.

浏览该模块的控制流程会很有帮助

elixir

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

防止熊猫为每个块将格式化的标头重写为 csv

我有一个带有丑陋标题的脏 csv,我已将其格式化并存储在列表中。

我想逐块读取这个 csv 块,对数据执行一些正则表达式,然后写入一个新的 csv。

我正在使用此功能来执行此操作

def format_data(data_location, formatted_header):
    df = pd.read_csv(data_location, sep=',', skiprows=1,
                     header=0, names=formatted_header, chunksize=10000)

    for chunk in df:
        chunk = chunk.replace('(?!(([^"]*"){2})*[^"]*$),', '', regex=True)
        chunk.to_csv('formatted_data.csv', mode='a', index=False)
Run Code Online (Sandbox Code Playgroud)

据我了解,我在这里做什么:

pd.read_csv(data_location, sep=',', skiprows=1,
            header=0, names=formatted_header, chunksize=10000)
Run Code Online (Sandbox Code Playgroud)

我正在从它的位置读取 csv,跳过第一个丑陋的标题行并替换为我的 formatted_header。

我的问题是,对于写入新 CSV 的每个新块,我看到格式化的标题行每 10,000 行重复一次。我怎样才能防止这种情况发生?

python pandas

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

使用 djoser 进行 Django ninja 令牌身份验证

我已经使用 Django Ninja 框架实现了 CRUD,但现在我想在我的应用程序中进行身份验证,我已经安装并配置了 Djoser,所以现在我可以生成令牌,但我不知道如何在我的 CRUD 中进行验证

class AuthBearer(HttpBearer):
    def authenticate(self, request, token):
        if token == "supersecret":
            return token

@api.get("/bearer", auth=AuthBearer())
def bearer(request):
    return {"token": request.auth}
Run Code Online (Sandbox Code Playgroud)

我应该能够检查“AuthBearer”函数内的令牌,但我不知道如何

我的仓库(链接

django django-rest-framework djoser django-ninja

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