Python - Configure gevent library on Google App Engine - python

I'm newbie in programming and need some help in the following situation.
I want to use gevent library on Google App Engine. I'm writing in Python using webapp2.
So the question is how to configure it so that it will work with GAE SDK.
I've put gevent library files in my projects directory like other libraries which are working well in this project. But when I run my app on local server it says:
ImportError: No module named greenlet
I've installed it on my computer,
pip install greenlet -t way/to/python/lib/directory
still it doesn't work
I had similar problem with lxml library, but It was solved after I've written its name in app.yaml. But lxml is preinstalled on GAE as written here. Although it's not the case with gevent.
I would appreciate any help. Thanks!

Related

How to 'pip install packages' inside Azure WebJob to resolve package compatibility issues

I am deploying a WebJob inside Azure Web App that uses Google Maps API and Azure SQL Storage.
I am following the typical approach where I make a WebJob directory and copy my 'site-packages' folder inside the root folder of the WebJob. Then I also add my code folder inside 'site-packages' and make a run.py file inside the root that looks like this:
import sys, os
sys.path.append(os.path.join(os.getcwd(), "site-packages"))
import aero2.AzureRoutine as aero2
aero2.run()
Now the code runs correctly in Azure. But I am seeing warnings after a few commands which slow down my code.
I have tried copying 'pyopenSSL' and 'requests' module into my site-packages folder, but the error persists.
However, the code runs perfectly on my local machine.
How can I find this 'pyopenSSL' or 'requests' that is compatible with the python running on Azure?
Or
How can I modify my code so that it pip installs the relevant packages for the python running on Azure?
Or more importantly,
How can I resolve this error?
#Saad,
If your webjob worked fine on Azure Web App, but you got inscuritywaring, I suggest you can try to disable the warning information via this configuration(https://urllib3.readthedocs.org/en/latest/security.html#disabling-warnings ).
Meanwhile,requests lib has some different with the high version, I recommend you refer to this document:
http://fossies.org/diffs/requests/2.5.3_vs_2.6.0/requests/packages/urllib3/util/ssl_.py-diff.html
And Azure web app used the Python 2.7.8 version which is lower than 2.7.9. So you can download the requests lib as version 2.5.3
According the doc referred in the warning message https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning:
Certain Python platforms (specifically, versions of Python earlier than 2.7.9) have restrictions in their ssl module that limit the configuration that urllib3 can apply. In particular, this can cause HTTPS requests that would succeed on more featureful platforms to fail, and can cause certain security features to be unavailable.
So the easiest way fix this warning, is to upgrade the python version of the Azure Web Apps. Login the Azure manager portal, change the python version to 3.4 in Application settings column:
As I test in webjob task to use requests module to request a "https://" url, and since upgrade python version to 3.4, there are no more warnings.
I followed this article and kind of 'pip installed' the pymongo library for my script. Not sure if it works for you but here are the steps:
Make sure you include the library name and version in the requirements.txt
Deploy the web app using Git. The directory should include at least
requirements.txt (only to install whatever is in requirements.txt in the virtual environment, which is shared with Web App in D:\home\site\wwwroot\env\Lib\site-packages)
add this block of code to the Python code you want to use in the WebJob zip file.
import sys
sitepackage = "D:\home\site\wwwroot\env\Lib\site-packages"
sys.path.append(sitepackage)

Error importing django-widget-tweaks on Google App Engine

I am deploying a Django app on Google App Engine, but I get an error when importing django-widget-tweaks:
appcfg.py: error: Error parsing ./app.yaml: the library "django-widget-tweaks" is not supported
Is there any way to fix this, apart from not using the library?
You can install third-party libraries yourself. Since this is not one of the runtime-provided third-party libraries you have to fulfill the following criteria:
The library must be implemented as pure Python code (no C extensions).
The code is uploaded to App Engine with your application code, and
counts toward file quotas.
Use pip to install the library and the
vendor module to enable importing packages from the third-party
library directory
From what I can tell the module you want to use is fully implemented in Python, so this should be straight forward. Consult the docs on vendoring for more information on how to do this.

Python Bottle Micro-Web Framework

Ok, so I've gone to the http://bottlepy.org/docs/dev/ website, and tried following their instructions for including the bottle.py framework, and do the little test web service test they have on the site.
The problem I'm having is that the python script does not recognize the "from bottle import route, run, template", so the code does not execute. I can't find anything to show HOW to properly include the bottle framework.
I've gone to YouTube, multiple posts on StackOverflow, and I'm not sure what I'm doing wrong.
Some info: I'm using Eclipse with PyDev, and I'm running on Windows 7 64 bit. Also, I write in other languages (Java, C#, Objective-C) but I'm new to Python, so maybe I'm making a newbie mistake...?
You need to install the Botte package. Citing the "Download and Install" section from the Bottle web site:
Install the latest stable release via PyPi (easy_install -U bottle) or download bottle.py (unstable) into your project directory.
If easy_install bottle didn't work, try pip install bottle.

How to implement WSGIProxy using setuptools in python google app engine for a webapp

Can somebody explain me how to use the setuptools inside python in google app engine to implement WSGIProxy for a webapp.
How do i utilize it, if i dont have access to the filesystem? Specifically,easy steps on how install package from python egg on GAE.
This should be relatively easy for someone who has used setuptools or installed 3rd party packages on GAE python.
I just answered almost the same question, but about a different library. The concept behind installing thirdparty libraries is exactly the same though, you need to either put a copy of the actual code in your app folder, or use a softlink to in.
GAE - Including external python modules without adding them to the repository?

python lxml unavailable in dev_appserver(gae,windows)

I have installed lxml yet.
It works fine in IDLE.
But when I start an basic app described below with dev_appserver.py ,server returns error "No module named lxml".
import webapp2,lxml
class MainPage(webapp2.RequestHandler):
def get(self):
self.response.out.write("test")
app = webapp2.WSGIApplication([("/(.*)", MainPage)],debug=True)
How can I resolve this??
Thanks!!
Assumingly you're using Python 2.7 runtime. This runtime provides a fine way for configuring libraries.
Please add libraries section in your app.yaml as follows:
libraries:
- name: lxml
version: latest
For more details, please see:
https://developers.google.com/appengine/docs/python/python27/using27#Configuring_Libraries
Any python library you use will need to be in your app folder - otherwise, it won't work when deployed, because only your app folder is deployed to App Engine. You'll need to put a copy of lxml in your app folder.
Secondly though, I don't think lxml will work at out, since it runs on top of C libraries, and only pure python projects work on App Engine.

Categories