小编Rom*_*nov的帖子

使用请求在python中下载大文件

请求是一个非常好的库.我想用它来下载大文件(> 1GB).问题是不可能将整个文件保存在内存中我需要以块的形式读取它.这是以下代码的问题

import requests

def DownloadFile(url)
    local_filename = url.split('/')[-1]
    r = requests.get(url)
    f = open(local_filename, 'wb')
    for chunk in r.iter_content(chunk_size=512 * 1024): 
        if chunk: # filter out keep-alive new chunks
            f.write(chunk)
    f.close()
    return 
Run Code Online (Sandbox Code Playgroud)

由于某种原因它不起作用.在将其保存到文件之前,它仍会将响应加载到内存中.

UPDATE

如果你需要一个可以从FTP下载大文件的小客户端(Python 2.x /3.x),你可以在这里找到它.它支持多线程和重新连接(它确实监视连接),它还为下载任务调整套接字参数.

python download stream python-requests

348
推荐指数
6
解决办法
27万
查看次数

来自AWS Lambda的MongoDB连接

我正在寻找使用连接到MongoDB数据库的AWS Lambda/API Gateway创建RESTful API.我已经读过与MongoDB的连接相对昂贵,因此最好的做法是在建立连接后保留连接以便重用,而不是为每个新查询建立新连接.

这对于普通应用程序来说非常简单,因为您可以在启动期间建立连接并在应用程序生命周期内重用它.但是,由于Lambda被设计为无国籍,因此保持这种联系似乎不太直接.

因此,我想知道什么是解决此数据库连接问题的最佳方法?我是否每次调用Lambda函数时都强制建立新连接,或者是否有办法池/缓存这些连接以获得更有效的查询?

谢谢.

mongodb amazon-web-services node.js aws-lambda

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

如何将MEAN.js(Node.js)应用程序部署到生产环境

MEAN.JS堆栈提出了为生产准备应用程序的"grunt构建"任务.不幸的是,缺乏有关后续步骤的信息.实际上,尚不清楚如何将应用程序部署到生产以及如何启动它.

问题#1 除了config/env/production.js的变化之外,项目中必须配置什么?例如,如何使用自定义字体?

问题#2 好的.代码部署到Production(通过Git,rsync等).运行它就足够了

 $NODE_ENV=production node server.js& 
Run Code Online (Sandbox Code Playgroud)

web-deployment node.js mean-stack

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

Yii2覆盖在Rest ActiveController中的泛型创建动作

我在Yii2中有一个Rest API,Yii生成所有动作

查看/更新/创建/删除

我想改变createMethode和其他方法的comportement,所以我不能使用类Controller,我应该使用类ActiveController

但我希望该类做同样的工作,我需要在创建之前添加一些操作,并在创建之后添加一些操作.所以我需要覆盖actionCreate

我该怎么做 ?

rest yii2

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

Yii2环境文件夹背后的想法是什么以及如何使用它?

我已多次阅读Yii2文档.我也谷歌搜索,我找不到任何有用的东西.

问题是我不了解环境文件夹的概念.请让我解释一下:

  1. 我可以在Git中使用分支(用于开发,分段和生产)
  2. *-local.conf文件被Git忽略,无论如何它们都不会被推送到升级或生产

为什么我必须复制环境/ devenvironment/prod中的所有控制器,视图和其他文件?

我实际上要在哪些文件夹中进行开发?

环境文件夹的部署过程是什么?我每次将更改推送到生产服务器后都应该调用init吗?

yii2 yii2-advanced-app

14
推荐指数
1
解决办法
5063
查看次数

MSBuild:如何为Web部署项目(VS2010)构建Web部署包?

我将一个Web站点项目(使用Web部署项目)从VS2008迁移到VS2010.现在我可以在VS2010中为Web部署项目制作"构建部署包",效果很好!但我找不到如何通过MSBuild做同样的方法.

msbuild visual-studio-2010 webdeploy

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

如何在MEAN.js和Node.js中管理资产(css)

MEAN.js使用配置文件进行css文件管理; 它还为模块自动加载所有css文件.

问题1:如何从列表中排除特定文件?

问题2:只为某些页面(部分)包含特定CSS文件的正确方法是什么?

问题3:如何按特定顺序包含CSS文件?现在我使用数字前缀作为文件名,例如.1_file.css,2_file.css等

node.js mean-stack

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

iPhone上的ComScore Analytics

有没有人在iPhone上使用ComScore进行分析?我无法理解如何启动它.请问有人帮我吗? - objective-c.

iphone analytics objective-c ios comscore

5
推荐指数
1
解决办法
3390
查看次数

在PHPStorm中调试Yii控制台应用程序

PHPStrom是一个很棒的IDE.我很喜欢.但我碰到了一个问题.我找不到如何为Yii控制台应用程序配置调试的说明.我为Yii Web应用程序设置了调试,它工作正常.任何帮助将受到高度赞赏.

Upd1:实际上我发现有3个Yii控制台应用程序的情况.

标准Yii控制台应用程序(webapp的protected/commands文件夹中的命令文件)

独立的Yii控制台应用程序(没有Web应用程序的独立控制台应用程序)

[我的案例] YiiBooster控制台应用程序(YiiBooster具有先进性,但适用于中型或大型项目的良好结构)

yii phpstorm

5
推荐指数
1
解决办法
5473
查看次数

如何通过ftp在python中下载大文件(带监控和重新连接)?

更新#1

问题中的代码非常适合稳定连接(如本地网络或内部网).

更新#2

FTPClient使用ftplib 实现了这个类,它可以:

  1. 监控下载进度
  2. 在超时或断开连接时重新连接
  3. 多次尝试下载文件
  4. 显示当前下载速度.

重新连接后,它将从断开连接点继续下载过程(如果FTP服务器支持它).有关详情,请参阅下面的答案.


我必须在python上实现任务,每天通过FTP下载一堆大文件(每个文件0.3-1.5Gb*200-300个文件),然后对文件进行一些处理.我是通过ftplib做到的.但它不时挂起,无法完成某些文件的下载.为了解决这个问题,我开始使用KEEPALIVE设置,但是我仍然没有收到好的结果

with closing(ftplib.FTP()) as ftp:
    try:
        ftp.connect(self.host, self.port, 30*60) #30 mins timeout
        # print ftp.getwelcome()
        ftp.login(self.login, self.passwd)
        ftp.set_pasv(True)
        ftp.sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
        ftp.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 75)
        ftp.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 60)
        with open(local_filename, 'w+b') as f:
            res = ftp.retrbinary('RETR %s' % orig_filename, f.write)

            if not res.startswith('226 Transfer complete'):
                logging.error('Downloaded of file {0} is not compile.'.format(orig_filename))
                os.remove(local_filename)
                return None

        os.rename(local_filename, self.storage + filename + file_ext)
        ftp.rename(orig_filename, orig_filename + '.copied')

        return …
Run Code Online (Sandbox Code Playgroud)

python ftplib

5
推荐指数
1
解决办法
5635
查看次数

如何处理 Go 中的异步错误?

我正在开发我的第一个真正的 Go 项目,一个消息传递 API。我使用通道在用户 goroutine 和使用线程不安全、基于事件的 C 协议库的库 goroutine 之间传递消息和其他数据。详情https://github.com/apache/qpid-proton/blob/master/proton-c/bindings/go/README.md

我的问题分为两个相关部分:

1. 处理跨渠道错误的常见习惯用法是什么?

一端的 goroutine 崩溃了,我如何确保另一端解除error阻塞,获得一个值并且以后不会再次阻塞?

对于读者:

  • 我可以关闭频道,但没有错误信息。
  • 我可以通过一个 struct { data, error }
  • 或使用第二个频道。

优点缺点?其他想法?

对于作家:我不能不惊慌地关闭,所以我想我需要第二个渠道。这是惯用语吗?

select {
    case sendChan <- data: sentOk()
    case err := <- errChan: oops(err)
}
Run Code Online (Sandbox Code Playgroud)

关闭后我也无法写入,因此我需要将错误存储在某处并在尝试写入之前进行检查。还有其他方法吗?

2. 在 API 中公开渠道。

我需要通道来传递错误信息:我应该将这些通道设为公共字段还是将它们隐藏在方法中?

有一个权衡,我没有经验来评估它:

  • 暴露通道让用户可以直接选择,但它需要他们正确执行错误处理模式(在写入之前检查错误,选择错误以及写入)。这看起来很复杂且容易出错,但也许是因为我不熟悉 Go。

  • 在方法中隐藏通道可以简化并强制正确使用库。但是现在异步用户必须创建他们自己的 goroutine 和 channel(s)。他们可能只是复制图书馆已经做的事情,这很愚蠢。路径上还有一个额外的 goroutine 和 channel。也许这没什么大不了的,但数据通道是我的库关键路径,我认为它必须与错误通道一起隐藏。

我可以做到这两点:为高级​​用户公开渠道,为有简单需求的人提供简单的方法包装器。这更值得支持,但如果两者都不能适合所有情况,那就值得了。

标准 net.Conn 使用阻塞方法,而不是通道,我编写了 goroutines 将数据泵送到我的 C 事件循环通道,所以我知道它可以完成,但我没有发现它微不足道。net.Conn 正在包装系统调用而不是下面的通道,因此“公开通道”不是一个选项。是否有任何标准库导出带有错误处理的通道?(time.After不计算,没有错误)

非常感谢!艾伦

error-handling channel go

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