Django地理异步数据源加载
项目描述
Django GeoSource
这个django应用提供了一组Rest Framework API,允许管理多个地理数据源,并将这些数据集成到您需要的地方,例如Django模型或任何输出管道。它提供了必要的celery任务来完成工作。
设置
您可以定义设置GEOSOURCE_MAX_TASK_RUNTIME
,该设置允许定义任务的最大运行时间,在此时间之前,它才能再次启动。这可以防止任务卡住并禁止再次启动。
配置和运行Celery
您必须在项目设置中定义变量CELERY_BROKER_URL和CELERY_RESULT_BACKEND,这些变量在Celery文档中指定。您还需要根据以下文档创建celery应用程序。
然后运行celery工作器:$ celery worker -A django_geosource -l info
要运行周期性任务,使用celery beat
from celery import Celery
from celery.schedules import crontab
app = Celery()
@app.after_finalize.connect
def setup_periodic_tasks(sender, **kwargs):
# Calls refresh check every 30 minutes
sender.add_periodic_task(60.0 * 30, run_auto_refresh_source.s())
@app.task
def run_auto_refresh_source():
from django_geosource.periodics import auto_refresh_source
auto_refresh_source()
然后运行允许周期性地同步源和启动的celery beat工作器: $ celery beat -A django_geosource -l info
配置数据目标
现在,您必须设置用于将数据插入目标数据库的回调方法。
如果您使用django-geostore,我们提供了geostore_callbacks
模块中的一些回调,否则您可以定义自己的回调。
GEOSOURCE_LAYER_CALLBACK
回调签名接收作为第一个参数的SourceModel对象,并必须返回您的Layer对象。示例
def layer_callback(geosource):
return Layer.objects.get_or_create(name=geosource.name)[0]
GEOSOURCE_FEATURE_CALLBACK
这个例子定义了一个特征创建回调方法。
def feature_callback(geosource, layer, identifier, geometry, attributes):
return Feature.objects.get_or_create(layer=layer, identifier=identifier, geom=geometry, properties=attributes)[0]
GEOSOURCE_CLEAN_FEATURE_CALLBACK
此回调在刷新完成后被调用,用于清除不再存在于数据库中的旧特征。它接收地理源、图层和开始更新日期作为参数,因此您可以根据您的模型进行相应的操作。例子
def clear_features(geosource, layer, begin_date):
return layer.features.filter(updated_at__lt=begin_date).delete()
GEOSOURCE_DELETE_LAYER_CALLBACK
当删除源时调用此方法,这样您就可以在源不存在时对数据库中的加载内容进行操作。它在实际删除之前执行。例子
def delete_layer(geosource, layer):
if layer.features.count() > 0:
layer.features.delete()
return layer.delete()
启动开发实例
在test_geosource
django项目中定义您想要的设置。
docker-compose build
docker-compose up
首次启动应失败,因为数据库需要初始化。只需运行相同的命令两次。
然后初始化数据库
docker-compose run web ./manage.py migrate
现在您可以编辑您的代码了。内部启动了django runserver,因此这是一个自动重载的服务器。
您可以在http://localhost:8000/api/访问API
测试和覆盖率
要运行测试套件,只需启动
docker-compose run --rm web ./manage.py test
要运行具有覆盖率的测试套件,执行此命令
docker-compose run web /code/src/coverage.sh
0.5.3 / 2022-03-04
-
添加ci作业以检查挂起的迁移(#42)
-
添加缺少的迁移
0.5.2 / 2022-02-02
- 简化WMTS源序列化器的验证
0.5.1 / 2021-10-13
- 添加处理mondrian异常的日志代理的hack
0.5.0 / 2021-09-14
- 更改启动周期性任务的方式
0.4.12 / 2021-09-08
- 修复调度器
0.4.11 / 2021-02-04
- 在CSVSourceSerialiser中禁用记录验证
0.4.10 / 2020-12-01
- 添加属性值列表端点
- [Bug] 强制更新顺序并添加到默认设置
0.4.9 / 2020-10-15
- 在源上添加错误报告
0.4.8 / 2020-10-07
- 字段顺序从源保持不变
- 在源上添加信用字段
- 添加日期作为字段类型
0.4.7 / 2020-07-01
- Csv空单元格记录为None值
- 更新测试,CSVSource设置不再只读
- 仅更新csvsource设置并使其可读
0.4.6 / 2020-05-14
- 在get_records测试中添加refresh_data断言
- 序列化器不向表示返回None值
- 即使没有标题,记录名称也是字符串
0.4.5 / 2020-05-13
- 从记录中删除忽略的列
0.4.4 / 2020-05-11
- 让pyexcel处理文件类型
0.4.3 / 2020-05-11
- 正确提取数据中的srid
- 修复分隔符名称中的拼写错误
- 确保正确的csv解码
0.4.2 / 2020-05-07
- 添加CSVSource源
0.4.1 / 2020-03-24
- 修复wmts geom_type必填项
0.4.0 / 2020-03-19
- 重大更改:更改celery的工作方式,以允许在另一个应用程序中使用celery
0.3.7 / 2020-03-17
- 增强测试以验证搜索和筛选
- 添加同步源以进行更多控制的选项
- 添加zipfile shapefilesource
0.3.6 / 2019-12-19
- 修复FileSourceSerializer中的bug
0.3.5 / 2019-12-18
- 为源添加排序和筛选
- 将flake8 linting添加到CI
0.3.4 / 2019-12-16
改进
- 改进文档
- 修复python3.8、django 3.0和DRF 3.11的兼容性
0.3.3 / 2019-11-06
改进
- 定义MANIFEST.in
0.3.1 / 2019-11-06
改进
- 改进当在源中找不到标识符字段时的错误信息
- 改进当geojson功能具有不良几何形状时的错误信息
- 在管道中使用black进行linting
0.3.0 / 2019-10-18
发布
- 首次发布
项目详情
django-geosource-0.5.3.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c5eabb87def40e0d47542654a5b6029c0c28feadd58c8d00e25d7312dd400339 |
|
MD5 | d6799010752d8b31c23302ed399f1fb8 |
|
BLAKE2b-256 | 8a9a6112477f7596b690fbdfc096979da54c37d075082f0895cfed2b82be93e9 |