将pleanrio数据集导出到s3

plenario-exporter-s3的Python项目详细描述


https://travis-ci.org/UrbanCCD-UChicago/plenario-exporter-s3.svg?branch=masterhttps://coveralls.io/repos/github/UrbanCCD-UChicago/plenario-exporter-s3/badge.svg?branch=master

用法

这既是一个简单的应用程序,也是一个相当复杂的应用程序。这个 它执行的操作是直截了当的—创建作业以导出数据集, 压缩生成的csv,将它们上传到amazon s3,并向请求者发送电子邮件。

应用程序使用django-channels:它是 django,从而免除了为 celeryflower。但它有自己的包袱——在生产过程中 它自己的服务器环境,并依赖redis进行消息传递。

总的来说,它相当快,我相信channels是未来 而不是celery

要连接起来,这是一个相对简单的安装:

# your site/settings.py
INSTALLED_APPS = [
    'whatever django and local stuff',
    'channels',  # necessary to make exporter go
    'plenario_exporter_s3',  # this app
]

CHANNEL_LAYERS = {
    'default': {
        'BACKEND': 'asgi_redis.RedisChannelLayer',
        'CONFIG': {
            'hosts': [os.environ.get('REDIS_URL', 'redis://localhost:6379')],
        },
        'ROUTING': 'plenario_exporter_s3.routing.channel_routing',
    },
}

您还需要一个asgi.py文件以及wsgi文件:

import os
import channels.asgi

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your app.settings')
channel_layer = channels.asgi.get_channel_layer()

在您的视图中,将提供的导出服务功能连接为 async_handler参数到plenario-core导出视图:

from plenario_core.views.export import GenericMetaExportView
from plenario_exporter_s3.services import create_models_and_start_job

from .models import EtlEventMeta

export_meta = GenericMetaExportView.as_view(
    models=[EtlEventMeta],
    async_handler=create_models_and_start_job)

开发

启动virtualenv并安装开发要求:

$ python3.6 -m venv .env
$ source .env/bin/activate
$ pip install -r dev-requirements.txt

要运行测试,请在单独的终端中拉入postgis docker图像并创建数据库:

$ docker pull mdillon/postgis
$ docker run -d -p 5432:5432 mdillon/postgis
$ docker ps
...
$ docker exec -it {container hash} /bin/bash
...
# su postgres -c psql
...
> create database plenario;

您还需要运行本地redis服务器:

$ docker pull redis
$ docker run -d -p 6379:6379 redis

那么您所要做的就是正常运行测试:

$ coverage run manage.py test
$ coverage report
$ flake8

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
与ReentrantLock相比,java ReentrantReadWriteLock的性能非常差   java如何使用Maven Android Studio正确导入?   安卓将ADB添加到我的Java PC应用程序   反射Java getDeclaredConstructor失败,来自JUnit的NoSuchMethodException   JSP上siteedit标记库的java替代   JavaSpring环境概要文件和JPA   java中是否有一个类似于StringBuilder的类,唯一的区别是它具有固定的长度?   JavaMathContext。小数点32 vs MathContext。小数点64,使用哪一个,为什么?   java使用spring在Ibm Websphere MQ中实现重试逻辑   java调用SpriteBatch。开始()和结束()   java有一种从文本中读取文本的方法。文件,并将其设置为pom中的maven属性。xml专家?   java让sitemesh使用struts2   Java Swing:在现有窗口上定位对话框   使用带有MemSql的JPA本机查询的java Select json列