我有以下功能正常,但由于某种原因,请求似乎是同步执行,而不是异步.
我现在的假设是,由于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) 我有一个 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 缓冲区不是我可以循环的迭代器。
有谁知道如何实现这一目标?
我有包含我的 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) 我有以下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)
这与它有什么关系吗?
是否可以渲染模板并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) 我有一个 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 时间创建日期时间对象?
我有一个如下所示的数据框:
+---+-----------+----------------+-------+
| | 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) 我正在阅读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是最后一个因为它停止了递归.
浏览该模块的控制流程会很有帮助
我有一个带有丑陋标题的脏 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 行重复一次。我怎样才能防止这种情况发生?
我已经使用 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”函数内的令牌,但我不知道如何
我的仓库(链接)