seems more a problem of the adapter rather than the scheduler itself
On Thursday, June 8, 2017 at 5:16:32 AM UTC+2, Richard P wrote:
>
> I just came across this same issue when using the web2py scheduler for the
> first time with an Oracle DB. I spent a good amount of time googling
> before finding this post which pointed me to where the problem was.
>
> I have implemented a work around by creating the below trigger in the
> database that will strip out the single quotes before the data is inserted
> into the table.
> It's not pretty but it works. Now my tasks are running fine.
>
> create or replace trigger replace_quotes
> before insert on SCHEDULER_TASK
> for each row
> begin
> :new.args := replace( :new.args, '''', '' );
> :new.vars := replace( :new.vars, '''', '' );
> end;
> /
>
>
>
> On Thursday, 8 September 2016 14:27:15 UTC+1, Erwn Ltmann wrote:
>>
>> Hi Dave,
>>
>> thx for your response. I'm sorry, but it doesn't helps me. My problem
>> concerning the usage of scheduler_task queueing. The web2py scheduler
>> transforms automatically the dictionary parameter 'pvars' into a string
>> represented JSON in order to save this value as VARCHAR2(512) into the vars
>> column of database (oracle) table scheduler_task. So far so good. But IMHO
>> with unnecessary quotes at begin and end. The scheduler part of web2py
>> tried to read scheduler records and fails because this (damn) extra quotes.
>>
>> E.
>>
>> On Thursday, September 8, 2016 at 4:01:37 AM UTC+2, Dave S wrote:
>>>
>>>
>>>
>>> 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.