在Heroku Cedar上,我想获得客户端的IP.第一次尝试:
ENV['REMOTE_ADDR']
Run Code Online (Sandbox Code Playgroud)
当然,这不起作用,因为所有请求都通过代理传递.所以替代方案是使用:
ENV['HTTP_X_FORWARDED_FOR']
Run Code Online (Sandbox Code Playgroud)
但这不太安全,是吗?
如果它只包含一个值,我就拿这个.如果它包含多个值(以逗号分隔),我可以选择第一个值.
但是,如果有人操纵这个价值呢?我不能相信ENV['HTTP_X_FORWARDED_FOR'],我可以用ENV['REMOTE_ADDR'].并且我也没有可以使用的可信代理列表.
但总是必须有一些方法来可靠地获取客户端的IP地址.你知道吗?
在他们的文档中,Heroku描述了X-Forwarded-For"连接到Heroku路由器的客户端的原始IP地址".
听起来好像Heroku可能会X-Forwarded-For用原始的远程IP 覆盖它.这样可以防止欺骗,对吧?有人可以验证吗?
django_Rest_framework 的文档指出:
如果您想同时施加突发节流率和持续节流率,也可以使用多个节流。例如,您可能希望将用户限制为每分钟最多 60 个请求,每天最多 1000 个请求。
但是,没有解释如何实现类似的情况。
我试过这样的事情,但没有用
REST_FRAMEWORK = {
'DEFAULT_THROTTLE_CLASSES': (
'rest_framework.throttling.AnonRateThrottle',
'rest_framework.throttling.UserRateThrottle'
),
'DEFAULT_THROTTLE_RATES': {
'anon': '100/day',
'user': ['30/minute', '1000/day']
}
}
Run Code Online (Sandbox Code Playgroud) 我正在抓取一个网站将数据导出为语义格式(n3).但是,我还想对该数据进行一些数据分析,因此以csv格式使用它更方便.
要获得两种格式的数据,我都可以
scrapy spider -t n3 -o data.n3
scrapy spider -t csv -o data.csv
Run Code Online (Sandbox Code Playgroud)
但是,这会刮掉数据两次,我无法承受大量数据.
有没有办法将相同的数据导出为多种格式?(不多次下载数据)
我觉得有趣的是有一个可以导出成不同格式的抓取数据的中间表示.但似乎没有办法用scrapy做到这一点.
我正在使用 django i18n,并且makemessages在开发我的应用程序时,我被多次执行以包含我标记为翻译的新短语。
最近,我意识到有一些翻译(不是很多)标记为:
#~ msgid "Location:"
#~ msgstr "Lugar:"
#~ msgid "Sector:"
#~ msgstr "Sector:"
Run Code Online (Sandbox Code Playgroud)
我发现这些条目是重复的,因为在文件中也有正确的翻译:
#: templates/userprofile.html:63
msgid "Location"
msgstr "Lugar:"
#: tiesport/userprofile.html:69
msgid "Sector"
msgstr "Sector:"
Run Code Online (Sandbox Code Playgroud)
这个'#~'是什么意思?
我有两个这样的数据帧:
df1 = pd.DataFrame({'A': [1,0,3], 'B':[0,0,1], 'C':[0,2,2]}, index =['a','b','c'])
df2 = pd.DataFrame({'A': [0,0], 'B':[2,1]}, index =['a','c'])
Run Code Online (Sandbox Code Playgroud)
df1和df2:
| A | B | C | | A | B |
---|---|---|---| ---|---|---|
a | 1 | 0 | 0 | a | 0 | 2 |
b | 0 | 0 | 2 | c | 0 | 1 |
c | 3 | 1 | 2 |
Run Code Online (Sandbox Code Playgroud)
预期的结果是:
| A | B | C |
---|---|---|---|
a | 1 | …Run Code Online (Sandbox Code Playgroud) 我试图通过在 pytest.ini 文件中包含 testpaths 选项来提高测试收集速度。
在每个应用程序文件夹中,我都有一个tests放置测试的文件,因此我将其包含如下:
[pytest]
testpaths = tests
Run Code Online (Sandbox Code Playgroud)
但是,没有收集任何测试。它返回错误:ERROR: file or directory not found: tests
我缺少什么?