nextcloud / news-updater

:newspaper: Fast, parallel feed updater for the News app; written in Python
GNU General Public License v3.0
107 stars 23 forks source link

ValueError: Could not parse given JSON because of missing PCNTL #3

Closed okias closed 7 years ago

okias commented 7 years ago

`Traceback (most recent call last): File "/usr/lib64/python3.4/site-packages/nextcloud_news_updater/api/api.py", line 21, in parse_feed feed_json = json.loads(json_string) File "/usr/lib64/python3.4/json/init.py", line 318, in loads return _default_decoder.decode(s) File "/usr/lib64/python3.4/json/decoder.py", line 343, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/lib64/python3.4/json/decoder.py", line 361, in raw_decode raise ValueError(errmsg("Expecting value", s, err.value)) from None ValueError: Expecting value: line 1 column 1 (char 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/usr/lib64/python3.4/site-packages/nextcloud_news_updater/api/updater.py", line 70, in run feeds = self.all_feeds() File "/usr/lib64/python3.4/site-packages/nextcloud_news_updater/api/cli.py", line 84, in all_feeds return self.api.parse_feed(feeds_json) File "/usr/lib64/python3.4/site-packages/nextcloud_news_updater/api/api.py", line 25, in parse_feed raise ValueError(msg) ValueError: Could not parse given JSON: The process control (PCNTL) extensions are required in case you want to interrupt long running commands - see http://php.net/manual/en/book.pcntl.php `

okias commented 7 years ago

seems like manually issuing commands works. Not sure, maybe I shouldn't use php.ini from fpm-php-7.0 ?

Update: Nope, changing to CLI version didn't helped. Is any different way how to debug?

BernhardPosselt commented 7 years ago

Try https://github.com/nextcloud/news-updater#using-the-cli-based-updater-fails should be enough information to get meaningful output.

My gues is that you need a different php executable path, see https://github.com/nextcloud/news-updater/blob/master/nextcloud_news_updater/api/cli.py#L22

Can you confirm?

okias commented 7 years ago

/etc/nextcloud/news/updater.ini

[updater] threads = 4 interval = 300 loglevel = error url = /var/www/nextc/htdocs phpini = /etc/nextcloud/news/php.ini apilevel = v2 mode = endless

PHP.ini seems doesn't matter, both (fpm and cli) gives same errors.

service file

[Unit] After=default.target `` [Service] Type=simple User=nginx ExecStart=/usr/bin/nextcloud-news-updater -c /etc/nextcloud/news/updater.ini [Install] WantedBy=default.target

BernhardPosselt commented 7 years ago

Can you try the stuff from my first link?

okias commented 7 years ago

Oh, sorry I didn't mentioned.

First part running commands manually works. Second part involving news-updater do not work.

BernhardPosselt commented 7 years ago

What commands do you use and what is the output?

BernhardPosselt commented 7 years ago

Closed because of inactivity

okias commented 7 years ago

sudo -u nginx /usr/bin/nextcloud-news-updater -c /etc/nextcloud/news/updater.ini

2016-09-07 13:26:11,566 - Nextcloud News Updater - ERROR - Could not parse given JSON: The process control (PCNTL) extensions are required in case you want to interrupt long running commands - see http://php.net/manual/en/book.pcntl.php {"feeds":[{"id":3,"userId":"testuser"},{"id":4,"userId":"testuser"},{"id":5,"userId":"testuser"},{"id":6,"userId":"testuser"},{"id":7,"userId":"testuser"},{"id":9,"userId":"testuser"},{"id":10,"userId":"testuser"},{"id":11,"userId":"testuser"},{"id":13,"userId":"testuser"},{"id":14,"userId":"testuser"},{"id":15,"userId":"testuser"},{"id":16,"userId":"testuser"},{"id":18,"userId":"testuser"},{"id":19,"userId":"testuser"},{"id":20,"userId":"testuser"},{"id":21,"userId":"testuser"},{"id":22,"userId":"testuser"},{"id":23,"userId":"testuser"},{"id":24,"userId":"testuser"},{"id":25,"userId":"testuser"},{"id":26,"userId":"testuser"},{"id":27,"userId":"testuser"},{"id":28,"userId":"testuser"},{"id":29,"userId":"testuser"},{"id":30,"userId":"testuser"},{"id":31,"userId":"testuser"},{"id":32,"userId":"testuser"},{"id":65,"userId":"testuser"},{"id":66,"userId":"testuser"},{"id":67,"userId":"testuser"},{"id":68,"userId":"testuser"}]}: Trying again in 30 seconds Traceback (most recent call last): File "/usr/lib64/python3.4/site-packages/nextcloud_news_updater/api/api.py", line 21, in parse_feed feed_json = json.loads(json_string) File "/usr/lib64/python3.4/json/init.py", line 318, in loads return _default_decoder.decode(s) File "/usr/lib64/python3.4/json/decoder.py", line 343, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/lib64/python3.4/json/decoder.py", line 361, in raw_decode raise ValueError(errmsg("Expecting value", s, err.value)) from None ValueError: Expecting value: line 1 column 1 (char 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/usr/lib64/python3.4/site-packages/nextcloud_news_updater/api/updater.py", line 70, in run feeds = self.all_feeds() File "/usr/lib64/python3.4/site-packages/nextcloud_news_updater/api/cli.py", line 84, in all_feeds return self.api.parse_feed(feeds_json) File "/usr/lib64/python3.4/site-packages/nextcloud_news_updater/api/api.py", line 25, in parse_feed raise ValueError(msg) ValueError: Could not parse given JSON: The process control (PCNTL) extensions are required in case you want to interrupt long running commands - see http://php.net/manual/en/book.pcntl.php {"feeds":[{"id":3,"userId":"testuser"},{"id":4,"userId":"testuser"},{"id":5,"userId":"testuser"},{"id":6,"userId":"testuser"},{"id":7,"userId":"testuser"},{"id":9,"userId":"testuser"},{"id":10,"userId":"testuser"},{"id":11,"userId":"testuser"},{"id":13,"userId":"testuser"},{"id":14,"userId":"testuser"},{"id":15,"userId":"testuser"},{"id":16,"userId":"testuser"},{"id":18,"userId":"testuser"},{"id":19,"userId":"testuser"},{"id":20,"userId":"testuser"},{"id":21,"userId":"testuser"},{"id":22,"userId":"testuser"},{"id":23,"userId":"testuser"},{"id":24,"userId":"testuser"},{"id":25,"userId":"testuser"},{"id":26,"userId":"testuser"},{"id":27,"userId":"testuser"},{"id":28,"userId":"testuser"},{"id":29,"userId":"testuser"},{"id":30,"userId":"testuser"},{"id":31,"userId":"testuser"},{"id":32,"userId":"testuser"},{"id":65,"userId":"testuser"},{"id":66,"userId":"testuser"},{"id":67,"userId":"testuser"},{"id":68,"userId":"testuser"}]}

BernhardPosselt commented 7 years ago

The process control (PCNTL) extensions are required in case you want to interrupt long running commands - see http://php.net/manual/en/book.pcntl.php

Error is right here ;)

okias commented 7 years ago

Oh, I trough it's suggestion. Would be great to mention more verbosely it's fatal error.

apiraino commented 5 years ago

Hi,

this old issue is still relevant as of PHP 7.2. This warning:

The process control (PCNTL) extensions are required in case you want to interrupt long running commands - see http://php.net/manual/en/book.pcntl.php

is not a fatal error, just a warning, but it's enough to have the python JSON parsing fail.

I worked around the issue using the cli version of the php.ini instead of the apache2 one, apparently there's no way to simply install the pcntl module without compiling.