小编San*_*Kim的帖子

python scrapy parse()函数,返回的返回值在哪里?

我是Scrapy的新手,如果这个问题很简单,我很抱歉.我已经从官方网页上阅读了关于Scrapy的文档.在浏览文档时,我遇到了这个例子:

import scrapy
from myproject.items import MyItem

class MySpider(scrapy.Spider):
  name = ’example.com’
  allowed_domains = [’example.com’]
  start_urls = [
  ’http://www.example.com/1.html’,
  ’http://www.example.com/2.html’,
  ’http://www.example.com/3.html’,
  ]

  def parse(self, response):
    for h3 in response.xpath(’//h3’).extract():
      yield MyItem(title=h3)
    for url in response.xpath(’//a/@href’).extract():
      yield scrapy.Request(url, callback=self.parse) 
Run Code Online (Sandbox Code Playgroud)

我知道,parse方法必须返回一个项目或/和请求,但这些返回值返回到哪里?

一个是项目而另一个是请求,我认为这两种类型的处理方式不同,在这种情况下CrawlSpider,它具有带回调的规则.这个回调的回报值怎么样?去哪儿 ?一样的parse()

我对Scrapy程序非常困惑,即使我阅读了文档....

python scrapy web-scraping scrapy-spider

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

tcsetattr() 带有 TCSADRAIN 标志的阻塞时间很奇怪

我在 Linux 中使用串行端口进行编码。

并且通信的要求是5ms inter-byte time

它要求我在write()调用之前根据字节的值更改每个字节的奇偶校验模式(偶数和奇数)。

所以我编码如下(我简单描述代码)

void setWakeupMode(int fd, bool mode) {
    struct termios tio;

    bzero(&tio, sizeof(tio));
    tcgetattr(fd, &tio);


    if (mode == false) {
        tio.c_cflag &= ~PARODD;
    } else if (mode == true) {
        tio.c_cflag |= PARODD;
    }

    if(tcsetattr(fd, TCSADRAIN, &tio) < 0){
        perror("tcsetattr Error");
    }
}

int main(){
    unsigned char a[2] = {0x01, 0x0F};

    write(fd, a, 1);

    setWakeupMode(fd, true);

    write(fd, a+1, 1);

}
Run Code Online (Sandbox Code Playgroud)

但是代码不满足字节间时间,导致近 20 毫秒。

所以我尝试打印每个系统调用之间的确切时间,如下所示。

   int main(){
        unsigned char a[2] = …
Run Code Online (Sandbox Code Playgroud)

c c++ linux serial-port

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

有没有办法一次性从redis列表中弹出所有列表项?

我想一次从 redis 列表中弹出所有列表项。

我不想在列表为空时调用lpoprpop方法,因为多次发送请求到redis-server.

我还知道我可以使用lrange方法获取所有列表,但不能弹出项目。

你能建议我吗?

我只想通过一个请求来将列表中的项目pop添加到。getredis-server

redis python-2.7

5
推荐指数
2
解决办法
8895
查看次数

Python基础映像与Ubuntu基础映像在Docker中分别安装python

我刚刚开始倾向于docker将其应用于我的应用程序。在执行过程中,我遇到了疑问。请理解这可能是一个琐碎的问题。我是docker的新手。

直观地使用OS(ubuntu)映像作为基础似乎比纯粹的python相对更沉重。

这就是为什么python即使有一些用例,我也总是尝试仅使用图像作为基础的原因ubuntu

然而,我发现我即使使用python图像作为基础用于容器它仍然能够运行Linux( Ubuntu)命令喜欢apt-getlsps和具有的文件系统结构等作为ubuntuhome, root , usr)。

它看起来仍然像是很小的操作系统ubuntu

我知道如果我仅使用ubuntu图像,则应该与python图像进行对比来手动设置环境(如果我只想运行python)

除了方便性方面,它们是否有其他区别,例如python除了ubuntu稳定性和性能之外,我还应该使用其他理由吗?

python ubuntu docker

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

Serverless框架中不同地域引用SSM的方法

Serverless 提供了访问SSM.

${ssm:/parameter-path}
Run Code Online (Sandbox Code Playgroud)

然而,它似乎只允许访问SSM同一区域的(参数)。

有没有办法SSM在不同地区进行参考?

有时会全局使用参数。

对于这些,我想在单个区域中创建它们,然后在多区域中共享它们。

否则,我应该在每个区域重新定义相同的参数。

amazon-web-services serverless-framework aws-ssm

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

测量 Django 查询集内存使用情况的策略

我想测量 Django 使用了多少内存queryset

例如,我尝试简单的方法。

import psutil
process = psutil.Process(os.getpid())
s = process.memory_info().rss  # in bytes
for i in queryset:
    pass
e = process.memory_info().rss  # in bytes
print('queryset memory: %s' % (e-s))
Run Code Online (Sandbox Code Playgroud)

由于迭代queryset,Django将访问数据库并且结果将被缓存,并且通过获取 Python 进程的内存使用情况,我尝试测量queryset内存使用情况。

我想知道访问是否正确或者有什么方法可以衡量我的目标,你们知道。

此度量是为了预测在尝试获取大量查询结果时是否会出现任何问题,如果存在,则根据会导致问题的行数进行预测。

我知道如果我想避免缓存queryset结果,我可以使用iterator(). 然而,iterator()还应该确定chunk_size参数来减少命中数据库的次数,并且内存使用量会根据不同的情况而有所不同chunk_size

import psutil
process = psutil.Process(os.getpid())
s = process.memory_info().rss  # in bytes
for i in queryset.iterator(chunk_size=10000):
    pass
e = process.memory_info().rss  # in bytes
print('queryset memory: …
Run Code Online (Sandbox Code Playgroud)

python django

5
推荐指数
0
解决办法
625
查看次数

gtest,未定义引用'testing :: Test :: ~Test()',testing :: Test :: Test()

我用gtest安装了 apt-get install libgtest-dev

我试图检查这是否有效.

所以我在eclipse中制作简单的代码进行测试.

但是有错误,

未定义引用'testing :: Test :: ~Test()'
未定义引用'testing :: Test :: Test()'

相反,如果我将ATest类的继承更改为受保护,则错误消失但是

发生另一个错误

测试::测试是'ATest_AAA_Test'无法访问的基础

怎么了 ?

#include <iostream>
#include <gtest/gtest.h>

class A{
public:
    int a;
    A(int a){this->a = a;}
    A(){}
    ~A(){}
    int getA(){return a;}
    void setA(int a){this->a = a;}
};

class ATest : public ::testing::Test{
public:
    virtual void SetUp(){
        a1 = A(1);
        a2 = A(2);
        a3 = A(3);
    }
    virtual void TearDwon(){}
    A a1;
    A a2;
    A a3;
};

TEST_F(ATest, AAA){
    EXPECT_EQ(1, a1.getA());
    EXPECT_EQ(2, …
Run Code Online (Sandbox Code Playgroud)

c++ unit-testing googletest

4
推荐指数
2
解决办法
8855
查看次数

对boost :: python :: detail :: init_module和朋友的未定义引用

我正在尝试在官方网站上使用示例测试Boost python。但这会导致很多错误...以下是我的工作和错误。

  1. 下载Boost1.55与
  2. Eclipse库搜索路径添加到“ usr / includ”(将目录放在此处)
  3. 添加库标志-lpython2.7(已安装Python2.7)
  4. 添加包含路径usr/include/python2.7(在我的第一次尝试中,发生了错误:找不到pyconfig.h

这是我所做的测试代码,并且出错,该测试代码只是为了查看它是否可以使用boost python正常编译。

#include <iostream>
#include <boost/python.hpp>

char const* greet()
{
   return "hello, world";
}

BOOST_PYTHON_MODULE(hello_ext)
{
    using namespace boost::python;
    def("greet", greet);
}

int main(){
    std::cout << "aaa" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

。在Eclipse中用红线表示的错误部分是BOOST_PYTHON_MODULE(hello_ext)

**** Build of configuration Debug for project tsetBoost ****

make all 
Building file: ../main.cpp
Invoking: GCC C++ Compiler
g++ -I/usr/include/python2.7 -O0 -g3 -Wall -c -fmessage-length=0 -std=c++0x -MMD -MP -MF"main.d" …
Run Code Online (Sandbox Code Playgroud)

c++ eclipse boost boost-python

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

Python subprocess.Popen PIPE 和 SIGPIPE

当我浏览帖子时,我在这里遇到了下面的这个例子,它说proc1.stdout.close()需要被调用以适当退出proc1,生成SIGPIPE.

import subprocess

proc1 = subprocess.Popen(['ps', 'cax'], stdout=subprocess.PIPE)
proc2 = subprocess.Popen(['grep', 'python'], stdin=proc1.stdout,
                         stdout=subprocess.PIPE, stderr=subprocess.PIPE)

proc1.stdout.close() # Allow proc1 to receive a SIGPIPE if proc2 exits.
out, err = proc2.communicate()
print('out: {0}'.format(out))
print('err: {0}'.format(err))
Run Code Online (Sandbox Code Playgroud)

但是,我并不清楚。请修正我的理解。

  1. SIGPIPE当 aPIPE尝试写入 closed时发生PIPE
  2. 作家PIPEproc1stdout和读者PIPEproc2stdin
  3. proc1退出时将退出proc2proc1尝试将数据写入proc2's stdin PIPE。因为
    • proc2stdin PIPE是,当关闭 …

python linux subprocess pipe sigpipe

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

如何使用CloudFormation为特定lambda设置lambda警报

这是来自AWS文档的CloudFormation警报的结构.

Type: "AWS::CloudWatch::Alarm"
Properties:
  ActionsEnabled: Boolean
  AlarmActions:
    - String
  AlarmDescription: String
  AlarmName: String
  ComparisonOperator: String
  Dimensions:
    - Dimension
  EvaluateLowSampleCountPercentile: String
  EvaluationPeriods: Integer
  ExtendedStatistic: String
  InsufficientDataActions:
    - String
  MetricName: String
  Namespace: String
  OKActions:
    - String
  Period: Integer
  Statistic: String
  Threshold: Double
  TreatMissingData: String
  Unit: String
Run Code Online (Sandbox Code Playgroud)

但是,它似乎设置了总lambda函数度量标准的警报,而不是仅针对特定函数,我找不到有关为特定函数设置警报的任何提及.

如何为特定功能设置警报?

amazon-web-services amazon-cloudwatch aws-lambda

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