On Wednesday, September 7, 2016 at 5:30:49 PM UTC-7, Erwn Ltmann wrote:
>
> Hi,
>
> I'm used to create a new task for example:
>
> scheduler.queue_task(
> "a_task",
> pvars = dict(csid=row.id, csname=row.name, action=row.action),
> ...
> )
>
> In the past (version 2.10.1), everything was fine. Within the current
> version (2.14.6) I have some trouble. See this code for example:
>
> for row in db(db.scheduler_task.group_name == "agents").select(
> db.scheduler_task.ALL):
> ...
> pvars = json.loads(row.vars)
>
> ... will raise this exception:
>
> ...
> File "/usr/local/lib/python2.7/json/decoder.py", line 384, in raw_decode
> raise ValueError("No JSON object could be decoded")
> ValueError: No JSON object could be decoded
>
> The reason is a quoted string in column 'VARS' in table 'SCHEDULER_TASK'
> (no quotes in web2py's old version 2.10.1).
>
> A new value for 'VARS' with quotes for example:
>
> '{"action": "script", "csname": "list", "csid": 121}'
>
> I can skip the quotes with a trick:
>
> pvars = json.loads(row.vars[1:-1])
>
> But, it is not a general solution. The same problem appears for column
> 'ARGS' in scheduler.py when I process the tasks:
>
> File "/export/home/armadm/dev01/release/web2py/gluon/scheduler.py", line
> 311, in executor
> args = _decode_list(loads(task.args))
> File "/usr/local/lib/python2.7/json/__init__.py", line 338, in loads
> return _default_decoder.decode(s)
> File "/usr/local/lib/python2.7/json/decoder.py", line 366, in decode
> obj, end = self.raw_decode(s, idx=_w(s, 0).end())
> File "/usr/local/lib/python2.7/json/decoder.py", line 384, in raw_decode
> raise ValueError("No JSON object could be decoded")
> ValueError: No JSON object could be decoded
>
> I use Oracle as database:
>
> SQL> desc scheduler_task
> Name Null? Type
> ----------------------------------------- --------
> ----------------------------
> ID NOT NULL NUMBER
> ...
> ARGS VARCHAR2(512)
> VARS VARCHAR2(512)
>
> Any ideas?
>
> Thx, Erwn
>
the vars field is a dict, with the var names as keys and the stuff you want
to pass as the values. Both are strings.
I use a single var in my code, the name is "where" and the value is a
path. So I do
if vars["where"]:
mywhere = vars["where"]
No stripping of quotes is needed to get the path.
/dps
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.