小编sac*_*rus的帖子

Pydantic:数据类与 BaseModel

使用 Pydantic 的数据类与 BaseModel 的优缺点是什么?是否存在任何性能问题,或者在其他 python 模块中 Pydantic 的数据类是否更容易?

python pydantic

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

Apache Airflow 或 Argoproj 用于在 kubernetes 上长时间运行和 DAG 任务

我们在 k8s 中有很多长时间运行的、内存/cpu 密集型作业,这些作业在谷歌云平台上的 kubernetes 上使用 celery 运行。然而,我们在扩展/重试/监控/警报/交付保证方面存在很大问题。我们想从 celery 转移到一些更高级的框架。

有一个比较:https : //github.com/argoproj/argo/issues/849但还不够。

空气流动:

  • 在社区有更好的支持 ~400 vs ~12 个标签在 SO,13k 星 vs ~3.5k 星
  • python 定义流的方式比仅使用 yaml 感觉更好
  • GCP 作为产品的支持:Cloud Composer
  • 更好的仪表板
  • 一些不错的运营商,如电子邮件运营商

阿尔戈项目:

  • 对 Kubernetes 的原生支持(我认为它在某种程度上更好)
  • 支持未来可能有用的 CI/CD/事件
  • (可能)更好地支持将结果从一项工作传递到另一项工作(在 Airflow xcom 机制中)

我们的 DAG 并没有那么复杂。我们应该选择哪些框架?

celery google-cloud-platform kubernetes airflow argoproj

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

GitOps 和数据库迁移

我正在尝试在我们公司引入 GitOps。大多数情况下,我们都有用 Django 编写的微服务(但是,它也可以是任何其他 Web 框架)。我对数据库迁移有一个概念性问题。向前迁移很简单:您可以将它们作为作业或 init 容器或 helm 中的钩子来运行。但是向后迁移呢?假设我想从 v1.1 回滚到 v1.0,并且我有一些迁移需要取消应用。现在怎么办?我想使用 argo cd 或 Flux。

有一篇非常好的文章:https://www.weave.works/blog/how-to- Correctly-handle-db-schemas-during-kubernetes-rollouts 。然而,它需要一些 Django 中没有的纪律

fluxcd gitops argocd

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

如何在 Helm 中仅呈现选定的模板?

我的掌舵图中有大约 20 个 yaml + 大量依赖项,我想检查特定一个的渲染输出。helm template渲染所有 yaml 并生成一百行代码。有没有办法(甚至有一个正则表达式会很好)只呈现选定的模板(通过文件或例如名称)。

kubernetes-helm

6
推荐指数
2
解决办法
5022
查看次数

当我将 WholeTextFiles() 与 pyspark 结合使用时,为什么 AWS 拒绝了我的连接?

我用

sc.wholeTextFiles(",".join(fs), minPartitions=200)
Run Code Online (Sandbox Code Playgroud)

在具有 96cpus 的单个 dataproc 节点上从 S3 下载 6k XMLs 文件(每个文件 50MB)。当我有 minPartitions=200 时,AWS 拒绝了我的连接,但是当我使用 minPartitions=50 时一切正常。为什么?

来自 Spark 的一些日志:

(...)
19/05/22 14:11:17 INFO org.apache.hadoop.io.compress.CodecPool: Got brand-new decompressor [.gz]
19/05/22 14:11:17 INFO org.apache.hadoop.io.compress.CodecPool: Got brand-new decompressor [.gz]
19/05/22 14:11:26 INFO org.apache.hadoop.io.compress.CodecPool: Got brand-new decompressor [.gz]
19/05/22 14:11:26 INFO org.apache.hadoop.io.compress.CodecPool: Got brand-new decompressor [.gz]
19/05/22 14:11:28 INFO org.apache.hadoop.io.compress.CodecPool: Got brand-new decompressor [.gz]
19/05/22 14:11:28 INFO org.apache.hadoop.io.compress.CodecPool: Got brand-new decompressor [.gz]
19/05/22 14:11:28 INFO org.apache.hadoop.io.compress.CodecPool: Got brand-new decompressor [.gz]
19/05/22 …
Run Code Online (Sandbox Code Playgroud)

python scala amazon-s3 apache-spark pyspark

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

从scrapy提取20万个域中的文本

我的问题是:我想从某个域中提取所有有价值的文本,例如www.example.com。因此,我转到该网站并访问深度最大为2的所有链接,并将其写入csv文件。

我用scrapy编写了模块,使用1个进程解决了这个问题,并产生了多个爬虫,但是效率很低-我能够抓取〜1k域/〜5k网站/ h,据我所知,瓶颈是CPU(因为GIL?)。离开PC一段时间后,我发现网络连接断开。

当我想使用多个进程时,我只是从扭曲中得到了错误:并行进程中Scrapy Spiders的多处理因此,这意味着我必须学习扭曲,与asyncio相比,我会说我已弃用,但这只是我的见解。

所以我有几个想法怎么办

  • 进行反击,并尝试使用Redis来学习扭曲并实现多处理和分布式队列,但是我不认为scrapy是适合这种工作的工具。
  • 使用pyspider-具有我需要的所有功能(我从未使用过)
  • 适可而止-这是如此复杂(我从未使用过)
  • 尝试构建自己的分布式搜寻器,但是在搜寻了4个网站之后,我发现了4种极端情况:SSL,重复项,超时。但是添加一些修改很容易,例如:集中爬网。

您推荐什么解决方案?

Edit1:共享代码

class ESIndexingPipeline(object):
    def __init__(self):
        # self.text = set()
        self.extracted_type = []
        self.text = OrderedSet()
        import html2text
        self.h = html2text.HTML2Text()
        self.h.ignore_links = True
        self.h.images_to_alt = True

    def process_item(self, item, spider):
        body = item['body']
        body = self.h.handle(str(body, 'utf8')).split('\n')

        first_line = True
        for piece in body:
            piece = piece.strip(' \n\t\r')
            if len(piece) == 0:
                first_line = True
            else:
                e = ''
                if not self.text.empty() and not first_line and not …
Run Code Online (Sandbox Code Playgroud)

python web-crawler nutch scrapy pyspider

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

kubernetes 中的 OutOfcpu 错误是什么意思?

我在 googlecloud 上的 kubernetes 中得到了 OutOfcpu 这意味着什么?我的 pod 现在似乎可以工作了,但是在同一个版本中有一些 pod 出现了 OutOfcpu。

google-cloud-platform kubernetes

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