跳转到主要内容

Django地理异步数据源加载

项目描述

Build Status codecov PyPi version

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 (24.5 kB 查看哈希值)

上传时间:

由以下提供支持