Supervisord和系统¶
芹菜¶
Rabbitmq和Redis¶
如何:通过API异步上载¶
在geonode中可以通过API以异步/同步方式上传资源。
下面是通过https://github.com/GeoNode/geonode/blob/582d6efda74adb8042d1d897004bbf764e6e0285/geonode/upload/api/tests.py#L416接口上传的完整示例
第一步¶
创建公共客户端会话,这是基础,因为geonode将检查请求会话。例如,对于请求,我们将执行如下操作:
import requests
client = requests.session()
注意:在Django中,此部件已被管理
第二步¶
调用 api/v2/uploads/upload PUT中的端点(是一个表单数据端点),方法是在文件中指定一个包含名称和我们要上传的文件的字典,以及一个包含所需信息的数据有效负载。例如:
params = {
"permissions": '{ "users": {"AnonymousUser": ["view_resourcebase"]} , "groups":{}}', # layer permissions
"time": "false",
"layer_title": "layer_title",
"time": "false",
"charset": "UTF-8",
}
files = {
"filename": <_io.BufferedReader name="filename">
}
client.put(
"http://localhost:8000/api/v2/uploads/upload/",
auth=HTTPBasicAuth(username, password),
data=params,
files=files,
)
Returns:
- dict with import id of the resource
第三步¶
在最终上传页面中调用,以触发实际导入。如果设置了Correclty,Geoserver将异步管理上传。
client.get("http://localhost:8000/upload/final?id={import_id}")
The `import_id` is returned from the previous step
第四步¶
上传已经在GeoNode上完成,我们应该检查直到Geoserver完成他的部分。要做到这一点,只需调用有关我们正在执行的上载的详细信息就足够了
client.get(f"http://localhost:8000/api/v2/uploads/{upload_id}")
当状态为 PROCESSED 完成的是 100% 我们可以在geonode和Geoserver中查看资源