Paolo,

On Thu, Apr 2, 2015 at 7:58 PM, Paolo Valleri <paolo.vall...@gmail.com>
wrote:

> Try to change
> https://github.com/web2py/web2py/blob/master/gluon/sqlhtml.py#L2151
> with
> filter1 = lambda f: isinstance(f, Field) and f.type != 'blob'
>

Thanks for the workaround.


> On Thursday, April 2, 2015 at 4:20:29 PM UTC+2, Paolo Valleri wrote:
>>
>> That is a bug because Grid selects the 'hidden' doc_blob field.
>> Please open an issue on github
>>
>
Yes, I will.

-Mandar



>
>> On Thursday, April 2, 2015 at 11:03:15 AM UTC+2, Mandar Vaze wrote:
>>>
>>> Hi,
>>>
>>> I have an application that uses uploads_in_blob feature as follows :
>>>
>>>     db._adapter.uploads_in_blob = True
>>>
>>> This creates an additional column of BYTEA type at the DB Level (I am
>>> using postgres, if it matters)
>>>
>>> Here is a sample table (This is just to give you the idea, this is not
>>> the exact definition):
>>>
>>> db.define_table('uploaded_docs',
>>>                 Field('document_name', 'string', default=''),
>>>                 Field('doc', 'upload', label=T('Document'),
>>>                       uploadfield=True,
>>>                       requires=IS_NOT_EMPTY(
>>>                           error_message=T('Select a document to upload'
>>> ))),
>>>                 Field('doc_property1', 'string'),
>>>                 Field('doc_property2', 'string'),
>>>                 Field('document_date', 'date'),
>>>                 Field('status', 'string', default='Open',
>>>                       requires=IS_IN_SET(['Draft', 'Approved', 'Under
>>> Review'])),
>>>                 Field('remarks', 'string', default='')
>>>                 )
>>>
>>>
>>>
>>>    1. User can upload documents in the "doc" field (which is the upload
>>>    field)
>>>    2. There is some meta data as described by other fields.
>>>    3. There is *no restriction on the size* of the document (Customer
>>>    requirement, can't negotiate)
>>>
>>>
>>> These documents are shown using SQLFORM.grid widget (automatic
>>> pagination, search, all the cool things)
>>>
>>> *Here is the problem* :
>>> Each time a DB query is run (and results returned to web2py), the *size
>>> of each row returned also includes the size of the uploaded document*.
>>> e.g. If each row has a document of say 5MB, then 20 rows that are
>>> returned by default pagination, consumes 100MB
>>> (I am not sure when this memory is released/GC'ed) So after going thru
>>> say 5 such queries, memory consumed is 500MB
>>>
>>> I have deployed the app on webfaction, with default memory block of 512MB
>>>
>>> So at this point, the "app" is killed, resulting into "502-Bad gateway"
>>> error to the end user.
>>>
>>> Customer may not always "download" the file, customer may be just
>>> looking at the records' metadata, so access to the BLOB isn't needed till
>>> user clicks the download link (denoted by "file" URL)
>>> When NOT using uploads_in_blob, the uploads folder only contains a
>>> filename, and the file actually resides on the disk. IMO the filesystem is
>>> accessed only when needed.
>>> Is there a way to handle BLOB field in similar fashion ? (Access only
>>> when needed)
>>>
>>> *Are there any suggestions on how to limit the memory usage ?*
>>> (The app is already in production, so if I handle this via code changes,
>>> this is definitely preferred over data migration)
>>>
>>> Thanks,
>>> -Mandar
>>>
>>  --
> 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 a topic in the
> Google Groups "web2py-users" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/web2py/7K4hAcOiEfg/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> web2py+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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 web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to