Thank you Anthony!  That got me past the filesystem issues.  Now it seems 
like I'm stuck in gluon._compat and urllib.  It is having problems 
importing.

cannot import name urllib_quote_plus: ImportError
Traceback (most recent call last):
File "/var/task/handler.py", line 585, in lambda_handler
return LambdaHandler.lambda_handler(event, context)
File "/var/task/handler.py", line 255, in lambda_handler
handler = cls()
File "/var/task/handler.py", line 138, in __init__
self.app_module = importlib.import_module(self.settings.APP_MODULE)
File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "C:\web2py\gluon\__init__.py", line 40, in <module>
File "C:\web2py\gluon\compileapp.py", line 44, in <module>
File "/var/task/gluon/rewrite.py", line 29, in <module>
from gluon._compat import urllib_unquote, urllib_quote, iteritems, xrange, 
urllib_quote_plus
ImportError: cannot import name urllib_quote_plus

Here is my sys.path:

['/var/task', '/var/runtime/awslambda', '/var/runtime', 
'/usr/lib/python27.zip', '/usr/lib64/python2.7', 
'/usr/lib64/python2.7/plat-linux2', '/usr/lib64/python2.7/lib-tk', 
'/usr/lib64/python2.7/lib-old', '/usr/lib64/python2.7/lib-dynload', 
'/usr/local/lib64/python2.7/site-packages', 
'/usr/local/lib/python2.7/site-packages', 
'/usr/lib64/python2.7/site-packages', '/usr/lib/python2.7/site-packages', 
'/usr/lib64/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']

I was worried this is because the vitualenv has urllib3 a requirement for 
zappa. However, I had a similar problem on importing "reload" from 
gluon._compat as well and had to comment out that import along with its 
usage in utf8.py.





On Saturday, September 8, 2018 at 2:47:55 PM UTC-5, Anthony wrote:
>
> You can use InDBMigrator (see 
> https://groups.google.com/d/msg/web2py/lZnL4hRloSc/SSEBnIM0CQAJ). Also, 
> rather than edit main.py, you can just ensure all the folders are there to 
> begin with. Finally, make sure to put sessions in cookies or the database.
>
> Anthony
>
> On Saturday, September 8, 2018 at 3:30:28 AM UTC-4, appj...@gmail.com 
> <javascript:> wrote:
>>
>> I am trying to migrate my Web2Py app from Heroku to AWS Lambda, using 
>> Zappa.  I can get it to start running, but I'm running into errors because 
>> web2py is trying to write to the filesystem:
>>
>>
>> [Errno 30] Read-only file system: '/var/task/deposit': OSError
>> Traceback (most recent call last):
>> File "/var/task/handler.py", line 574, in lambda_handler
>> return LambdaHandler.lambda_handler(event, context)
>> File "/var/task/handler.py", line 244, in lambda_handler
>> handler = cls()
>> File "/var/task/handler.py", line 150, in __init__
>> import gluon.main
>> File "/var/task/gluon/main.py", line 64, in <module>
>> create_missing_folders()
>> File "C:\web2py\gluon\admin.py", line 460, in create_missing_folders
>> File "C:\web2py\gluon\admin.py", line 454, in try_mkdir
>> OSError: [Errno 30] Read-only file system: '/var/task/deposit'.  
>>
>> So I commented out the following functions from gluon/main.py
>>
>> create_missing_app_folders() 
>> and
>> create_missing_folders() 
>>
>>
>> However, now I'm getting stuck with the DB trying to create tables:
>>
>>
>> [ERROR] 2018-09-08T07:05:35.270Z 905ef1e6-b335-11e8-816d-07b31200db80 
>> Traceback (most recent call last):
>> File "/var/task/gluon/restricted.py", line 219, in restricted
>> exec(ccode, environment)
>> File "/var/task/applications/ads/models/db.py", line 72, in <module>
>> session.connect(request, response, db=db)
>> File "C:\web2py\gluon\globals.py", line 946, in connect
>> File "/var/task/gluon/packages/dal/pydal/base.py", line 587, in 
>> define_table
>> table = self.lazy_define_table(tablename, *fields, **args)
>> File "/var/task/gluon/packages/dal/pydal/base.py", line 621, in 
>> lazy_define_table
>> polymodel=polymodel)
>> File "/var/task/gluon/packages/dal/pydal/adapters/base.py", line 797, in 
>> create_table
>> return self.migrator.create_table(*args, **kwargs)
>> File "/var/task/gluon/packages/dal/pydal/migrator.py", line 275, in 
>> create_table
>> query), table)
>> File "/var/task/gluon/packages/dal/pydal/migrator.py", line 483, in log
>> logfile = self.file_open(table._loggername, 'ab')
>> File "/var/task/gluon/packages/dal/pydal/migrator.py", line 491, in 
>> file_open
>> fileobj = portalocker.LockedFile(filename, mode)
>> File "C:\web2py\gluon\packages\dal\pydal\contrib\portalocker.py", line 
>> 185, in __init__
>> File "C:\web2py\gluon\packages\dal\pydal\contrib\portalocker.py", line 
>> 170, in open_file
>> IOError: [Errno 2] No such file or directory: 
>> '/var/task/applications/ads/databases/sql.log'
>>
>>
>> Is this a never-ending rabbit hole or is there a way to tell web2py that 
>> it cannot write to the filesystem.  I tried 
>> global_setttings.web2py_runtime_gae=True
>>
>> but that causes a bunch of other problems because GAE resources are not 
>> present.
>>
>> I'd love to get this on AWS Lambda because my application can have 
>> temporary 1000x spikes in traffic and Serverless lets me handle this 
>> without ops and without paying for idle server time in the evenings.
>>
>> If I can get this working I will post a deployment recipe.
>>
>> Thanks,
>> -Mike
>>
>>

-- 
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