Couchdb support is still experimental in web2py. If auth is not working 
you'd likely to wait (or help Massimo with) a better implementation of the 
DAL.

If you need ultra-fast tasks you'd want to use celery (or pyres, or rq). 
The current scheduler with SQLite can process ~5 tasks per second per 
single worker (YMMV for complex apps or functions). Multiple workers with 
SQLite and WAL archiving disabled is not recommended. Anyway, with WAL 
activated, I tested with no problems 8 concurrent workers with a great deal 
of tasks (~6000) with a semi-linear scalability.
With Mysql or postgres it's possible to process tasks with even more 
concurrent workers (I'd still keep them 50 at most). The only downside of 
SQLite instead of a "full relational db" is that you can't share the db 
among different machines.



On Thursday, July 26, 2012 7:03:44 AM UTC+2, Ted wrote:
>
> Hi Niphlod,
>
> Since the usecase for a Scheduler often needs concurrent fast write/reads 
> and updates (from multiple clients) with information that is largely 
> temporary I think a Nosql DB is a great way to handle scheduler data.
>
> In my case I don't want the overhead of installing a full relational db 
> and I'm sure that the SQLite adapter will not perform well under load with 
> multiple scheduler tasks.
>
> Since I posted I have tried CouchDB as my Auth db and am getting similar 
> errors (at the same code point as above) about the encoding. I am using 
> Python 2.6, web2py Version 2.00.0 (2012-07-18 21:46:56) dev and CouchDB 
> 1.0.1.
>
> Ted
>  
>
> On Thursday, July 26, 2012 2:07:17 AM UTC+7, Niphlod wrote:
>>
>> Scheduler was meant to run on relational dbs. Actually, I think noone 
>> ever tested it on Nosql adapters, but if this is a popular requirement I 
>> could see into it.
>>
>> BTW, I posted an app to test the scheduler in trunk for this kind of 
>> tests.
>>
>> https://groups.google.com/d/topic/web2py/E_mASrZIpvw/discussion
>>
>>
>>
>> On Wednesday, July 25, 2012 1:42:50 PM UTC+2, Ted wrote:
>>>
>>> Hi Web2pyers,
>>>
>>> Has anyone sucessfully used the new scheduler functionality with *
>>> CouchDB? *(I'm assuming this is feasible)
>>>
>>> I'm currently trying to use the scheduler on *Windows 7* with *CouchDB *as 
>>> the DAL source.
>>> My code works fine with sqlite but seems to silently fail using *CouchDB
>>> *- although the tables are correctly created.
>>>
>>> e.g.
>>>
>>> scheduler_db = DAL('couchdb://127.0.0.1:5984')
>>> scheduler = 
>>> Scheduler(scheduler_db,dict(demo1=demo1,demo2=demo2),heartbeat=1) 
>>>
>>>
>>> (The *CouchDB* scheduler_worker table seems to mysteriously keep 
>>> growing.)
>>>
>>> When I try to manually add a task through the Admin (
>>> http://127.0.0.1:8000/init/appadmin/insert/scheduler_db/scheduler_task)
>>>
>>> I get the following error:
>>>
>>> Traceback (most recent call last):
>>>   File "C:\Users\ted\dev\web2py\gluon\restricted.py", line 205, in 
>>> restricted
>>>     exec ccode in environment
>>>   File "C:/Users/ted/dev/Px/applications/init/controllers/appadmin.py" 
>>> <http://127.0.0.1:8000/admin/default/edit/init/controllers/appadmin.py>, 
>>> line 270, in <module>
>>>   File "C:\Users\ted\dev\web2py\gluon\globals.py", line 182, in <lambda>
>>>     self._caller = lambda f: f()
>>>   File "C:/Users/ted/dev/Px/applications/init/controllers/appadmin.py" 
>>> <http://127.0.0.1:8000/admin/default/edit/init/controllers/appadmin.py>, 
>>> line 103, in insert
>>>     if form.accepts(request.vars, session):
>>>   File "C:\Users\ted\dev\web2py\gluon\sqlhtml.py", line 1307, in accepts
>>>     self.vars.id = self.table.insert(**fields)
>>>   File "C:\Users\ted\dev\web2py\gluon\dal.py", line 7422, in insert
>>>     ret =  self._db._adapter.insert(self,self._listify(fields))
>>>   File "C:\Users\ted\dev\web2py\gluon\dal.py", line 4432, in insert
>>>     values = dict((k.name,self.represent(v,k.type)) for k,v in fields)
>>>   File "C:\Users\ted\dev\web2py\gluon\dal.py", line 4432, in <genexpr>
>>>     values = dict((k.name,self.represent(v,k.type)) for k,v in fields)
>>>   File "C:\Users\ted\dev\web2py\gluon\dal.py", line 4402, in represent
>>>     return repr(not isinstance(value,unicode) and value or 
>>> value.encode('utf8'))
>>> AttributeError: 'long' object has no attribute 'encode'
>>>
>>> Any suggestions on what is going wrong?
>>>
>>> Thanks,
>>> Ted
>>>
>>>
>>>

-- 



Reply via email to