小编Jho*_*ith的帖子

如何在scrapy-splash中设置启动超时?

我使用scrapy-splash来抓取网页,并在docker上运行splash服务.

commond:

docker run -p 8050:8050 scrapinghub/splash --max-timeout 3600
Run Code Online (Sandbox Code Playgroud)

但我得到了504错误.

"error": {"info": {"timeout": 30}, "description": "Timeout exceeded rendering page", "error": 504, "type": "GlobalTimeoutError"}
Run Code Online (Sandbox Code Playgroud)

虽然我尝试添加splash.resource_timeout,request:set_timeout或者SPLASH_URL = 'http://localhost:8050?timeout=1800.0'没有任何改变.

感谢帮助.

python scrapy scrapy-splash splash-js-render

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

flink kafka生产者在检查点恢复时以一次模式发送重复消息

我正在写一个案例来测试 flink 两步提交,下面是概述。

在此输入图像描述

sink kafka曾经是kafka生产者。sink step是 mysql 接收器扩展two step commitsink compare是mysql的sinkextend two step commit,这个sink偶尔会抛出异常来模拟检查点失败。

当检查点失败并恢复时,我发现mysql两步提交可以正常工作,但是kafka消费者将读取上次成功的偏移量,并且kafka生产者会产生消息,即使他在这个检查点失败之前已经完成了

在这种情况下如何避免重复消息?

感谢帮助。

环境

  • 弗林克1.9.1

  • 爪哇1.8

  • 卡夫卡2.11

卡夫卡生产者代码:

        dataStreamReduce.addSink(new FlinkKafkaProducer<>(
                "flink_output",
                new KafkaSerializationSchema<Tuple4<String, String, String, Long>>() {
                    @Override
                    public ProducerRecord<byte[], byte[]> serialize(Tuple4<String, String, String, Long> element, @Nullable Long timestamp) {
                        UUID uuid = UUID.randomUUID();
                        JSONObject jsonObject = new JSONObject();
                        jsonObject.put("uuid", uuid.toString());
                        jsonObject.put("key1", element.f0);
                        jsonObject.put("key2", element.f1);
                        jsonObject.put("key3", element.f2);
                        jsonObject.put("indicate", element.f3);
                        return new ProducerRecord<>("flink_output", jsonObject.toJSONString().getBytes(StandardCharsets.UTF_8));
                    }
                }, …
Run Code Online (Sandbox Code Playgroud)

streaming blink apache-flink flink-streaming

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