2026-03-26 08:51:14 [collect] start
python3: can't open file 'collect.py': [Errno 2] No such file or directory
2026-03-26 08:51:14 [collect] end exit_code=2
2026-03-26 08:53:49 [collect] start
python3: can't open file 'collect.py': [Errno 2] No such file or directory
2026-03-26 08:53:49 [collect] end exit_code=2
2026-03-26 08:59:21 [collect] start
Traceback (most recent call last):
  File "app/workflow/collect.py", line 4, in <module>
    from app.db.connection import get_connection
ModuleNotFoundError: No module named 'app'
2026-03-26 08:59:21 [collect] end exit_code=1
2026-03-26 09:00:57 [collect] start
/usr/bin/python3: Error while finding module specification for 'app/workflow/collect.py' (ModuleNotFoundError: No module named 'app/workflow/collect')
2026-03-26 09:00:57 [collect] end exit_code=1
2026-03-26 09:03:21 [collect] start
/usr/bin/python3: Error while finding module specification for 'app.workflow.collect.py' (ModuleNotFoundError: __path__ attribute not found on 'app.workflow.collect' while trying to find 'app.workflow.collect.py')
2026-03-26 09:03:21 [collect] end exit_code=1
2026-03-26 09:03:53 [collect] start
Traceback (most recent call last):
  File "/home/didierl/.local/lib/python3.8/site-packages/mysql/connector/network.py", line 728, in open_connection
    addrinfos = socket.getaddrinfo(
  File "/usr/lib/python3.8/socket.py", line 918, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -3] Temporary failure in name resolution

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/home/didierl/Portofolio/HappyHeadlines/app/workflow/collect.py", line 74, in <module>
    collect()
  File "/home/didierl/Portofolio/HappyHeadlines/app/workflow/collect.py", line 17, in collect
    conn = get_connection()
  File "/home/didierl/Portofolio/HappyHeadlines/app/db/connection.py", line 5, in get_connection
    return mysql.connector.connect(
  File "/home/didierl/.local/lib/python3.8/site-packages/mysql/connector/pooling.py", line 323, in connect
    return MySQLConnection(*args, **kwargs)
  File "/home/didierl/.local/lib/python3.8/site-packages/mysql/connector/connection.py", line 179, in __init__
    self.connect(**kwargs)
  File "/home/didierl/.local/lib/python3.8/site-packages/mysql/connector/abstracts.py", line 1399, in connect
    self._open_connection()
  File "/home/didierl/.local/lib/python3.8/site-packages/mysql/connector/connection.py", line 357, in _open_connection
    self._socket.open_connection()
  File "/home/didierl/.local/lib/python3.8/site-packages/mysql/connector/network.py", line 748, in open_connection
    raise InterfaceError(
mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on '%-.100s:%u' (%s) (Warning: %u format: a number is required, not str)
2026-03-26 09:04:13 [collect] end exit_code=1
2026-03-26 09:20:10 [collect] start
Traceback (most recent call last):
  File "/home/didierl/.local/lib/python3.8/site-packages/mysql/connector/network.py", line 758, in open_connection
    self.sock.connect(sockaddr)
socket.timeout: timed out

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/home/didierl/Portofolio/HappyHeadlines/app/workflow/collect.py", line 74, in <module>
    collect()
  File "/home/didierl/Portofolio/HappyHeadlines/app/workflow/collect.py", line 17, in collect
    conn = get_connection()
  File "/home/didierl/Portofolio/HappyHeadlines/app/db/connection.py", line 5, in get_connection
    return mysql.connector.connect(
  File "/home/didierl/.local/lib/python3.8/site-packages/mysql/connector/pooling.py", line 323, in connect
    return MySQLConnection(*args, **kwargs)
  File "/home/didierl/.local/lib/python3.8/site-packages/mysql/connector/connection.py", line 179, in __init__
    self.connect(**kwargs)
  File "/home/didierl/.local/lib/python3.8/site-packages/mysql/connector/abstracts.py", line 1399, in connect
    self._open_connection()
  File "/home/didierl/.local/lib/python3.8/site-packages/mysql/connector/connection.py", line 357, in _open_connection
    self._socket.open_connection()
  File "/home/didierl/.local/lib/python3.8/site-packages/mysql/connector/network.py", line 760, in open_connection
    raise InterfaceError(
mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'abelia.o2switch.net:3306' (timed out)
2026-03-26 09:20:20 [collect] end exit_code=1
2026-03-26 09:20:45 [collect] start
Traceback (most recent call last):
  File "/home/didierl/.local/lib/python3.8/site-packages/mysql/connector/network.py", line 758, in open_connection
    self.sock.connect(sockaddr)
socket.timeout: timed out

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/home/didierl/Portofolio/HappyHeadlines/app/workflow/collect.py", line 74, in <module>
    collect()
  File "/home/didierl/Portofolio/HappyHeadlines/app/workflow/collect.py", line 17, in collect
    conn = get_connection()
  File "/home/didierl/Portofolio/HappyHeadlines/app/db/connection.py", line 5, in get_connection
    return mysql.connector.connect(
  File "/home/didierl/.local/lib/python3.8/site-packages/mysql/connector/pooling.py", line 323, in connect
    return MySQLConnection(*args, **kwargs)
  File "/home/didierl/.local/lib/python3.8/site-packages/mysql/connector/connection.py", line 179, in __init__
    self.connect(**kwargs)
  File "/home/didierl/.local/lib/python3.8/site-packages/mysql/connector/abstracts.py", line 1399, in connect
    self._open_connection()
  File "/home/didierl/.local/lib/python3.8/site-packages/mysql/connector/connection.py", line 357, in _open_connection
    self._socket.open_connection()
  File "/home/didierl/.local/lib/python3.8/site-packages/mysql/connector/network.py", line 760, in open_connection
    raise InterfaceError(
mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'abelia.o2switch.net:3306' (timed out)
2026-03-26 09:20:55 [collect] end exit_code=1
2026-03-27 18:05:01 [collect] start
✅ Collect terminé — inserted=443, skipped(dup)=809
2026-03-27 18:05:15 [collect] end exit_code=0
2026-03-28 07:05:01 [collect] start
✅ Collect terminé — inserted=493, skipped(dup)=733
2026-03-28 07:05:30 [collect] end exit_code=0
2026-03-28 12:05:02 [collect] start
✅ Collect terminé — inserted=240, skipped(dup)=992
2026-03-28 12:05:24 [collect] end exit_code=0
2026-03-28 18:05:02 [collect] start
✅ Collect terminé — inserted=278, skipped(dup)=960
2026-03-28 18:05:19 [collect] end exit_code=0
2026-03-29 07:05:01 [collect] start
✅ Collect terminé — inserted=398, skipped(dup)=845
2026-03-29 07:05:21 [collect] end exit_code=0
2026-03-29 12:05:02 [collect] start
✅ Collect terminé — inserted=229, skipped(dup)=1014
2026-03-29 12:05:19 [collect] end exit_code=0
2026-03-29 18:05:02 [collect] start
✅ Collect terminé — inserted=288, skipped(dup)=949
2026-03-29 18:05:21 [collect] end exit_code=0
2026-03-30 07:05:02 [collect] start
✅ Collect terminé — inserted=445, skipped(dup)=789
2026-03-30 07:05:22 [collect] end exit_code=0
2026-03-30 12:05:01 [collect] start
✅ Collect terminé — inserted=289, skipped(dup)=941
2026-03-30 12:05:18 [collect] end exit_code=0
2026-03-30 18:05:01 [collect] start
✅ Collect terminé — inserted=417, skipped(dup)=817
2026-03-30 18:05:16 [collect] end exit_code=0
2026-03-31 07:05:02 [collect] start
✅ Collect terminé — inserted=509, skipped(dup)=699
2026-03-31 07:05:18 [collect] end exit_code=0
2026-03-31 12:05:01 [collect] start
✅ Collect terminé — inserted=324, skipped(dup)=905
2026-03-31 12:05:16 [collect] end exit_code=0
2026-03-31 18:05:02 [collect] start
✅ Collect terminé — inserted=414, skipped(dup)=830
2026-03-31 18:05:19 [collect] end exit_code=0
2026-04-01 07:05:02 [collect] start
✅ Collect terminé — inserted=519, skipped(dup)=725
2026-04-01 07:05:18 [collect] end exit_code=0
2026-04-01 12:05:02 [collect] start
✅ Collect terminé — inserted=297, skipped(dup)=945
2026-04-01 12:05:19 [collect] end exit_code=0
2026-04-01 18:05:01 [collect] start
✅ Collect terminé — inserted=418, skipped(dup)=816
2026-04-01 18:05:24 [collect] end exit_code=0
2026-04-02 07:05:02 [collect] start
✅ Collect terminé — inserted=489, skipped(dup)=738
2026-04-02 07:05:21 [collect] end exit_code=0
2026-04-02 12:05:01 [collect] start
✅ Collect terminé — inserted=298, skipped(dup)=935
2026-04-02 12:05:16 [collect] end exit_code=0
2026-04-02 18:05:02 [collect] start
✅ Collect terminé — inserted=389, skipped(dup)=842
2026-04-02 18:05:16 [collect] end exit_code=0
2026-04-03 07:05:02 [collect] start
✅ Collect terminé — inserted=472, skipped(dup)=759
2026-04-03 07:05:36 [collect] end exit_code=0
2026-04-03 12:05:01 [collect] start
✅ Collect terminé — inserted=284, skipped(dup)=944
2026-04-03 12:05:17 [collect] end exit_code=0
2026-04-03 18:05:01 [collect] start
✅ Collect terminé — inserted=317, skipped(dup)=902
2026-04-03 18:05:15 [collect] end exit_code=0
2026-04-04 07:05:02 [collect] start
✅ Collect terminé — inserted=441, skipped(dup)=781
2026-04-04 07:05:19 [collect] end exit_code=0
2026-04-04 12:05:02 [collect] start
✅ Collect terminé — inserted=212, skipped(dup)=999
2026-04-04 12:05:20 [collect] end exit_code=0
2026-04-04 18:05:02 [collect] start
✅ Collect terminé — inserted=266, skipped(dup)=953
2026-04-04 18:05:17 [collect] end exit_code=0
2026-04-05 07:05:02 [collect] start
✅ Collect terminé — inserted=397, skipped(dup)=817
2026-04-05 07:05:21 [collect] end exit_code=0
2026-04-05 12:05:02 [collect] start
✅ Collect terminé — inserted=221, skipped(dup)=978
2026-04-05 12:05:20 [collect] end exit_code=0
2026-04-05 18:05:02 [collect] start
✅ Collect terminé — inserted=253, skipped(dup)=946
2026-04-05 18:05:18 [collect] end exit_code=0
2026-04-06 07:05:02 [collect] start
✅ Collect terminé — inserted=397, skipped(dup)=818
2026-04-06 07:05:20 [collect] end exit_code=0
2026-04-06 12:05:02 [collect] start
✅ Collect terminé — inserted=249, skipped(dup)=958
2026-04-06 12:05:18 [collect] end exit_code=0
2026-04-06 18:05:02 [collect] start
✅ Collect terminé — inserted=325, skipped(dup)=903
2026-04-06 18:05:16 [collect] end exit_code=0
2026-04-07 07:05:02 [collect] start
✅ Collect terminé — inserted=483, skipped(dup)=725
2026-04-07 07:05:16 [collect] end exit_code=0
2026-04-07 12:05:02 [collect] start
✅ Collect terminé — inserted=310, skipped(dup)=897
2026-04-07 12:05:16 [collect] end exit_code=0
2026-04-07 18:05:02 [collect] start
✅ Collect terminé — inserted=420, skipped(dup)=792
2026-04-07 18:05:16 [collect] end exit_code=0
2026-04-08 07:05:02 [collect] start
✅ Collect terminé — inserted=517, skipped(dup)=698
2026-04-08 07:05:22 [collect] end exit_code=0
2026-04-08 12:05:02 [collect] start
✅ Collect terminé — inserted=312, skipped(dup)=911
2026-04-08 12:05:18 [collect] end exit_code=0
2026-04-08 18:05:02 [collect] start
✅ Collect terminé — inserted=431, skipped(dup)=831
2026-04-08 18:05:16 [collect] end exit_code=0
2026-04-09 07:05:02 [collect] start
✅ Collect terminé — inserted=510, skipped(dup)=721
2026-04-09 07:05:17 [collect] end exit_code=0
2026-04-09 12:05:02 [collect] start
✅ Collect terminé — inserted=331, skipped(dup)=897
2026-04-09 12:05:16 [collect] end exit_code=0
2026-04-09 18:05:02 [collect] start
✅ Collect terminé — inserted=430, skipped(dup)=829
2026-04-09 18:05:18 [collect] end exit_code=0
2026-04-10 07:05:02 [collect] start
✅ Collect terminé — inserted=507, skipped(dup)=728
2026-04-10 07:05:17 [collect] end exit_code=0
2026-04-10 12:05:02 [collect] start
✅ Collect terminé — inserted=313, skipped(dup)=915
2026-04-10 12:05:18 [collect] end exit_code=0
2026-04-10 18:05:02 [collect] start
✅ Collect terminé — inserted=413, skipped(dup)=835
2026-04-10 18:05:18 [collect] end exit_code=0
2026-04-11 07:05:02 [collect] start
✅ Collect terminé — inserted=460, skipped(dup)=783
2026-04-11 07:05:17 [collect] end exit_code=0
2026-04-11 12:05:02 [collect] start
✅ Collect terminé — inserted=281, skipped(dup)=938
2026-04-11 12:05:19 [collect] end exit_code=0
2026-04-11 18:05:01 [collect] start
✅ Collect terminé — inserted=298, skipped(dup)=931
2026-04-11 18:05:15 [collect] end exit_code=0
2026-04-12 07:05:01 [collect] start
✅ Collect terminé — inserted=449, skipped(dup)=766
2026-04-12 07:05:16 [collect] end exit_code=0
2026-04-12 12:05:01 [collect] start
✅ Collect terminé — inserted=218, skipped(dup)=996
2026-04-12 12:05:15 [collect] end exit_code=0
2026-04-12 18:05:01 [collect] start
✅ Collect terminé — inserted=280, skipped(dup)=921
2026-04-12 18:05:19 [collect] end exit_code=0
2026-04-13 07:05:01 [collect] start
✅ Collect terminé — inserted=461, skipped(dup)=761
2026-04-13 07:05:16 [collect] end exit_code=0
2026-04-13 12:05:01 [collect] start
✅ Collect terminé — inserted=302, skipped(dup)=918
2026-04-13 12:05:16 [collect] end exit_code=0
2026-04-13 18:05:02 [collect] start
✅ Collect terminé — inserted=417, skipped(dup)=821
2026-04-13 18:05:16 [collect] end exit_code=0
2026-04-14 07:05:02 [collect] start
✅ Collect terminé — inserted=466, skipped(dup)=778
2026-04-14 07:05:18 [collect] end exit_code=0
2026-04-14 12:05:02 [collect] start
✅ Collect terminé — inserted=379, skipped(dup)=858
2026-04-14 12:05:16 [collect] end exit_code=0
2026-04-14 18:05:02 [collect] start
✅ Collect terminé — inserted=449, skipped(dup)=803
2026-04-14 18:05:16 [collect] end exit_code=0
2026-04-15 07:05:02 [collect] start
✅ Collect terminé — inserted=477, skipped(dup)=756
2026-04-15 07:05:17 [collect] end exit_code=0
2026-04-15 12:05:02 [collect] start
✅ Collect terminé — inserted=366, skipped(dup)=860
2026-04-15 12:05:16 [collect] end exit_code=0
2026-04-15 18:05:02 [collect] start
✅ Collect terminé — inserted=429, skipped(dup)=824
2026-04-15 18:05:15 [collect] end exit_code=0
2026-04-16 07:05:01 [collect] start
✅ Collect terminé — inserted=467, skipped(dup)=750
2026-04-16 07:05:17 [collect] end exit_code=0
2026-04-16 12:05:02 [collect] start
✅ Collect terminé — inserted=326, skipped(dup)=902
2026-04-16 12:05:16 [collect] end exit_code=0
2026-04-16 18:05:01 [collect] start
✅ Collect terminé — inserted=420, skipped(dup)=813
2026-04-16 18:05:19 [collect] end exit_code=0
2026-04-17 07:05:01 [collect] start
✅ Collect terminé — inserted=518, skipped(dup)=702
2026-04-17 07:05:18 [collect] end exit_code=0
2026-04-17 12:05:02 [collect] start
✅ Collect terminé — inserted=333, skipped(dup)=886
2026-04-17 12:05:16 [collect] end exit_code=0
2026-04-17 18:05:02 [collect] start
✅ Collect terminé — inserted=424, skipped(dup)=809
2026-04-17 18:05:19 [collect] end exit_code=0
2026-04-18 07:05:01 [collect] start
✅ Collect terminé — inserted=479, skipped(dup)=736
2026-04-18 07:05:19 [collect] end exit_code=0
2026-04-18 12:05:02 [collect] start
✅ Collect terminé — inserted=242, skipped(dup)=976
2026-04-18 12:05:15 [collect] end exit_code=0
2026-04-18 18:05:02 [collect] start
✅ Collect terminé — inserted=295, skipped(dup)=935
2026-04-18 18:05:15 [collect] end exit_code=0
2026-04-19 07:05:02 [collect] start
✅ Collect terminé — inserted=442, skipped(dup)=775
2026-04-19 07:05:17 [collect] end exit_code=0
2026-04-19 12:05:02 [collect] start
✅ Collect terminé — inserted=219, skipped(dup)=995
2026-04-19 12:05:32 [collect] end exit_code=0
2026-04-19 18:05:02 [collect] start
✅ Collect terminé — inserted=288, skipped(dup)=923
2026-04-19 18:05:22 [collect] end exit_code=0
2026-04-20 07:05:01 [collect] start
✅ Collect terminé — inserted=450, skipped(dup)=761
2026-04-20 07:05:16 [collect] end exit_code=0
2026-04-20 12:05:01 [collect] start
✅ Collect terminé — inserted=306, skipped(dup)=912
2026-04-20 12:05:16 [collect] end exit_code=0
2026-04-20 18:05:02 [collect] start
✅ Collect terminé — inserted=382, skipped(dup)=852
2026-04-20 18:05:17 [collect] end exit_code=0
2026-04-21 07:05:01 [collect] start
✅ Collect terminé — inserted=510, skipped(dup)=698
2026-04-21 07:05:17 [collect] end exit_code=0
2026-04-21 12:05:02 [collect] start
✅ Collect terminé — inserted=324, skipped(dup)=898
2026-04-21 12:05:15 [collect] end exit_code=0
2026-04-21 18:05:02 [collect] start
✅ Collect terminé — inserted=399, skipped(dup)=832
2026-04-21 18:05:15 [collect] end exit_code=0
2026-04-22 07:05:02 [collect] start
✅ Collect terminé — inserted=516, skipped(dup)=696
2026-04-22 07:05:15 [collect] end exit_code=0
2026-04-22 12:05:02 [collect] start
✅ Collect terminé — inserted=329, skipped(dup)=880
2026-04-22 12:05:16 [collect] end exit_code=0
2026-04-22 18:05:02 [collect] start
✅ Collect terminé — inserted=437, skipped(dup)=810
2026-04-22 18:05:15 [collect] end exit_code=0
2026-04-23 07:05:02 [collect] start
✅ Collect terminé — inserted=526, skipped(dup)=706
2026-04-23 07:05:24 [collect] end exit_code=0
2026-04-23 12:05:02 [collect] start
✅ Collect terminé — inserted=313, skipped(dup)=915
2026-04-23 12:05:16 [collect] end exit_code=0
2026-04-23 18:05:01 [collect] start
✅ Collect terminé — inserted=433, skipped(dup)=823
2026-04-23 18:05:16 [collect] end exit_code=0
2026-04-24 07:05:02 [collect] start
✅ Collect terminé — inserted=512, skipped(dup)=719
2026-04-24 07:05:14 [collect] end exit_code=0
2026-04-24 12:05:02 [collect] start
✅ Collect terminé — inserted=326, skipped(dup)=894
2026-04-24 12:05:16 [collect] end exit_code=0
2026-04-24 18:05:01 [collect] start
✅ Collect terminé — inserted=415, skipped(dup)=824
2026-04-24 18:05:20 [collect] end exit_code=0
2026-04-25 07:05:02 [collect] start
✅ Collect terminé — inserted=472, skipped(dup)=775
2026-04-25 07:05:26 [collect] end exit_code=0
2026-04-25 12:05:02 [collect] start
✅ Collect terminé — inserted=308, skipped(dup)=935
2026-04-25 12:05:15 [collect] end exit_code=0
2026-04-25 18:05:02 [collect] start
✅ Collect terminé — inserted=268, skipped(dup)=973
2026-04-25 18:05:16 [collect] end exit_code=0
2026-04-26 07:05:02 [collect] start
✅ Collect terminé — inserted=416, skipped(dup)=828
2026-04-26 07:05:17 [collect] end exit_code=0
2026-04-26 12:05:02 [collect] start
✅ Collect terminé — inserted=262, skipped(dup)=959
2026-04-26 12:05:16 [collect] end exit_code=0
2026-04-26 18:05:02 [collect] start
✅ Collect terminé — inserted=306, skipped(dup)=925
2026-04-26 18:05:17 [collect] end exit_code=0
2026-04-27 07:05:02 [collect] start
✅ Collect terminé — inserted=384, skipped(dup)=843
2026-04-27 07:05:15 [collect] end exit_code=0
2026-04-27 12:05:02 [collect] start
✅ Collect terminé — inserted=333, skipped(dup)=883
2026-04-27 12:05:16 [collect] end exit_code=0
2026-04-27 18:05:02 [collect] start
✅ Collect terminé — inserted=404, skipped(dup)=831
2026-04-27 18:05:25 [collect] end exit_code=0
2026-04-28 07:05:01 [collect] start
✅ Collect terminé — inserted=503, skipped(dup)=723
2026-04-28 07:05:15 [collect] end exit_code=0
2026-04-28 12:05:02 [collect] start
✅ Collect terminé — inserted=309, skipped(dup)=909
2026-04-28 12:05:17 [collect] end exit_code=0
2026-04-28 18:05:02 [collect] start
✅ Collect terminé — inserted=440, skipped(dup)=784
2026-04-28 18:05:16 [collect] end exit_code=0
2026-04-29 07:05:01 [collect] start
✅ Collect terminé — inserted=529, skipped(dup)=696
2026-04-29 07:05:15 [collect] end exit_code=0
2026-04-29 12:05:02 [collect] start
✅ Collect terminé — inserted=309, skipped(dup)=927
2026-04-29 12:05:15 [collect] end exit_code=0
2026-04-29 18:05:02 [collect] start
[WARN] RSS KO: https://www.standardmedia.co.ke/rss/headlines.php -> HTTPSConnectionPool(host='www.standardmedia.co.ke', port=443): Read timed out. (read timeout=15)
✅ Collect terminé — inserted=445, skipped(dup)=785
2026-04-29 18:05:30 [collect] end exit_code=0
2026-04-30 07:05:01 [collect] start
✅ Collect terminé — inserted=508, skipped(dup)=741
2026-04-30 07:05:36 [collect] end exit_code=0
2026-04-30 12:05:02 [collect] start
[WARN] RSS KO: https://www.standardmedia.co.ke/rss/headlines.php -> HTTPSConnectionPool(host='www.standardmedia.co.ke', port=443): Read timed out. (read timeout=15)
✅ Collect terminé — inserted=369, skipped(dup)=838
2026-04-30 12:05:31 [collect] end exit_code=0
2026-04-30 18:05:02 [collect] start
[WARN] RSS KO: https://www.standardmedia.co.ke/rss/headlines.php -> HTTPSConnectionPool(host='www.standardmedia.co.ke', port=443): Read timed out. (read timeout=15)
✅ Collect terminé — inserted=437, skipped(dup)=761
2026-04-30 18:05:29 [collect] end exit_code=0
2026-05-01 07:05:01 [collect] start
✅ Collect terminé — inserted=497, skipped(dup)=704
2026-05-01 07:05:21 [collect] end exit_code=0
2026-05-01 12:05:01 [collect] start
[WARN] RSS KO: https://www.standardmedia.co.ke/rss/headlines.php -> HTTPSConnectionPool(host='www.standardmedia.co.ke', port=443): Read timed out. (read timeout=15)
✅ Collect terminé — inserted=277, skipped(dup)=886
2026-05-01 12:05:30 [collect] end exit_code=0
2026-05-01 18:05:01 [collect] start
✅ Collect terminé — inserted=351, skipped(dup)=869
2026-05-01 18:05:23 [collect] end exit_code=0
2026-05-02 07:05:02 [collect] start
[WARN] RSS KO: https://www.standardmedia.co.ke/rss/headlines.php -> HTTPSConnectionPool(host='www.standardmedia.co.ke', port=443): Read timed out. (read timeout=15)
✅ Collect terminé — inserted=484, skipped(dup)=692
2026-05-02 07:05:30 [collect] end exit_code=0
2026-05-02 12:05:02 [collect] start
✅ Collect terminé — inserted=233, skipped(dup)=969
2026-05-02 12:05:26 [collect] end exit_code=0
2026-05-02 18:05:01 [collect] start
✅ Collect terminé — inserted=272, skipped(dup)=928
2026-05-02 18:05:19 [collect] end exit_code=0
2026-05-03 07:05:02 [collect] start
[WARN] RSS KO: https://www.standardmedia.co.ke/rss/headlines.php -> HTTPSConnectionPool(host='www.standardmedia.co.ke', port=443): Read timed out. (read timeout=15)
✅ Collect terminé — inserted=421, skipped(dup)=756
2026-05-03 07:05:31 [collect] end exit_code=0
2026-05-03 12:05:01 [collect] start
✅ Collect terminé — inserted=213, skipped(dup)=992
2026-05-03 12:05:18 [collect] end exit_code=0
2026-05-03 18:05:01 [collect] start
[WARN] RSS KO: https://www.standardmedia.co.ke/rss/headlines.php -> HTTPSConnectionPool(host='www.standardmedia.co.ke', port=443): Read timed out. (read timeout=15)
✅ Collect terminé — inserted=270, skipped(dup)=906
2026-05-03 18:05:32 [collect] end exit_code=0
2026-05-04 07:05:02 [collect] start
[WARN] RSS KO: https://www.standardmedia.co.ke/rss/headlines.php -> HTTPSConnectionPool(host='www.standardmedia.co.ke', port=443): Read timed out. (read timeout=15)
✅ Collect terminé — inserted=449, skipped(dup)=736
2026-05-04 07:05:30 [collect] end exit_code=0
2026-05-04 12:05:01 [collect] start
✅ Collect terminé — inserted=275, skipped(dup)=946
2026-05-04 12:05:17 [collect] end exit_code=0
2026-05-04 18:05:01 [collect] start
[WARN] RSS KO: https://www.standardmedia.co.ke/rss/headlines.php -> HTTPSConnectionPool(host='www.standardmedia.co.ke', port=443): Read timed out. (read timeout=15)
✅ Collect terminé — inserted=387, skipped(dup)=823
2026-05-04 18:05:37 [collect] end exit_code=0
2026-05-05 07:05:01 [collect] start
[WARN] RSS KO: https://www.standardmedia.co.ke/rss/headlines.php -> HTTPSConnectionPool(host='www.standardmedia.co.ke', port=443): Read timed out. (read timeout=15)
✅ Collect terminé — inserted=502, skipped(dup)=685
2026-05-05 07:05:30 [collect] end exit_code=0
2026-05-05 12:05:01 [collect] start
✅ Collect terminé — inserted=304, skipped(dup)=902
2026-05-05 12:05:17 [collect] end exit_code=0
2026-05-05 18:05:02 [collect] start
✅ Collect terminé — inserted=410, skipped(dup)=817
2026-05-05 18:05:22 [collect] end exit_code=0
2026-05-06 07:05:01 [collect] start
✅ Collect terminé — inserted=524, skipped(dup)=710
2026-05-06 07:05:14 [collect] end exit_code=0
2026-05-06 12:05:01 [collect] start
✅ Collect terminé — inserted=336, skipped(dup)=906
2026-05-06 12:05:14 [collect] end exit_code=0
2026-05-06 18:05:01 [collect] start
✅ Collect terminé — inserted=429, skipped(dup)=819
2026-05-06 18:05:15 [collect] end exit_code=0
2026-05-07 07:05:01 [collect] start
✅ Collect terminé — inserted=520, skipped(dup)=697
2026-05-07 07:05:14 [collect] end exit_code=0
2026-05-07 12:05:01 [collect] start
✅ Collect terminé — inserted=311, skipped(dup)=925
2026-05-07 12:05:14 [collect] end exit_code=0
2026-05-07 18:05:01 [collect] start
✅ Collect terminé — inserted=435, skipped(dup)=804
2026-05-07 18:05:14 [collect] end exit_code=0
2026-05-08 07:05:01 [collect] start
✅ Collect terminé — inserted=527, skipped(dup)=698
2026-05-08 07:05:15 [collect] end exit_code=0
2026-05-08 12:05:01 [collect] start
✅ Collect terminé — inserted=307, skipped(dup)=908
2026-05-08 12:05:15 [collect] end exit_code=0
2026-05-08 18:05:01 [collect] start
✅ Collect terminé — inserted=427, skipped(dup)=820
2026-05-08 18:05:14 [collect] end exit_code=0
2026-05-09 07:05:02 [collect] start
✅ Collect terminé — inserted=481, skipped(dup)=757
2026-05-09 07:05:15 [collect] end exit_code=0
2026-05-09 12:05:01 [collect] start
✅ Collect terminé — inserted=231, skipped(dup)=993
2026-05-09 12:05:14 [collect] end exit_code=0
2026-05-09 18:05:01 [collect] start
✅ Collect terminé — inserted=300, skipped(dup)=925
2026-05-09 18:05:15 [collect] end exit_code=0
2026-05-10 07:05:01 [collect] start
✅ Collect terminé — inserted=412, skipped(dup)=794
2026-05-10 07:05:15 [collect] end exit_code=0
2026-05-10 12:05:02 [collect] start
✅ Collect terminé — inserted=243, skipped(dup)=969
2026-05-10 12:05:15 [collect] end exit_code=0
2026-05-10 18:05:01 [collect] start
✅ Collect terminé — inserted=278, skipped(dup)=931
2026-05-10 18:05:17 [collect] end exit_code=0
2026-05-11 07:05:01 [collect] start
✅ Collect terminé — inserted=445, skipped(dup)=764
2026-05-11 07:05:36 [collect] end exit_code=0
2026-05-11 12:05:02 [collect] start
✅ Collect terminé — inserted=301, skipped(dup)=914
2026-05-11 12:05:15 [collect] end exit_code=0
2026-05-11 18:05:02 [collect] start
✅ Collect terminé — inserted=419, skipped(dup)=808
2026-05-11 18:05:17 [collect] end exit_code=0
2026-05-12 07:05:02 [collect] start
✅ Collect terminé — inserted=511, skipped(dup)=716
2026-05-12 07:05:23 [collect] end exit_code=0
2026-05-12 12:05:01 [collect] start
✅ Collect terminé — inserted=319, skipped(dup)=914
2026-05-12 12:05:22 [collect] end exit_code=0
2026-05-12 18:05:01 [collect] start
✅ Collect terminé — inserted=431, skipped(dup)=819
2026-05-12 18:05:14 [collect] end exit_code=0
2026-05-13 07:05:01 [collect] start
✅ Collect terminé — inserted=512, skipped(dup)=713
2026-05-13 07:05:16 [collect] end exit_code=0
2026-05-13 12:05:01 [collect] start
✅ Collect terminé — inserted=317, skipped(dup)=907
2026-05-13 12:05:17 [collect] end exit_code=0
2026-05-13 18:05:02 [collect] start
✅ Collect terminé — inserted=451, skipped(dup)=792
2026-05-13 18:05:18 [collect] end exit_code=0
2026-05-14 07:05:01 [collect] start
✅ Collect terminé — inserted=487, skipped(dup)=741
2026-05-14 07:05:20 [collect] end exit_code=0
2026-05-14 12:05:02 [collect] start
✅ Collect terminé — inserted=317, skipped(dup)=923
2026-05-14 12:05:18 [collect] end exit_code=0
2026-05-14 18:05:02 [collect] start
✅ Collect terminé — inserted=418, skipped(dup)=838
2026-05-14 18:05:15 [collect] end exit_code=0
2026-05-15 07:05:02 [collect] start
✅ Collect terminé — inserted=514, skipped(dup)=731
2026-05-15 07:05:16 [collect] end exit_code=0
