使用GAE urlfetch时,有没有人遇到以下异常的经验?
DownloadError: ApplicationError: 2 timed out
Run Code Online (Sandbox Code Playgroud)
我正在尝试发送HTTP POST请求.像这样:
result = urlfetch.fetch('http://api.nathan.com:8080/Obj/',
method='POST',
payload=postdata,
deadline=10)
Run Code Online (Sandbox Code Playgroud)
我已经尝试将截止日期设置为最大值(10秒).来自命令行的请求(使用curl或httplib2)大约需要一秒钟.
nchong@almond ~ $ time curl
-d "<Obj><a>1</a><b>n</b></Obj>"
http://api.nathan.com:8080/Obj/
agd1c2VyYXBpcgoLEgRTZXNzGAIM #< key returned by call
real 0m1.109s
user 0m0.003s
sys 0m0.009s
Run Code Online (Sandbox Code Playgroud)
这是来自dev appserver的curl请求的输出(我正在使用appengine-rest-server):
INFO __init__.py:819] adding models from module __main__
INFO __init__.py:867] added model Obj with type <class '__main__.Obj'>
INFO dev_appserver.py:3243] "POST /Obj HTTP/1.1" 200 -
INFO dev_appserver_index.py:205] Updating /path/to/index.yaml
Run Code Online (Sandbox Code Playgroud)
这是我尝试使用urlfetch时的输出:
ERROR __init__.py:388] ApplicationError: 2 timed out
Traceback (most recent call last):
File "/path/to/webapp/__init__.py", line …Run Code Online (Sandbox Code Playgroud) 我想自动化与网页的互动.我一直在使用pycurl,但最终网页将使用javascript,所以我正在寻找替代方案.典型的互动是"打开页面,搜索某些文本,点击链接(打开表单),填写表格并提交".
我们正在Google App引擎上部署,如果这有所不同的话.
澄清:我们在appengine上部署网页.但是交互是在一台单独的机器上运行的.所以硒似乎是最好的选择.
我有一个(GoogleAppEngine)Django ModelForm:
class A(db.Model):
a = db.StringProperty()
class MyAForm(djangoforms.ModelForm):
class Meta:
model = A
Run Code Online (Sandbox Code Playgroud)
这将创建一个具有一个字符串字段的表单a.在我的表格中,我想称之为别的,比方说b.所以我想要一个带有字段b的表单,当表单被POST时,我们创建一个新的A实体,其a属性填充-value b.
有没有一个简洁的方法来做这个管道?
(ps我不想改变底层模型)