将pleanrio数据集导出到s3
plenario-exporter-s3的Python项目详细描述
用法
这既是一个简单的应用程序,也是一个相当复杂的应用程序。这个 它执行的操作是直截了当的—创建作业以导出数据集, 压缩生成的csv,将它们上传到amazon s3,并向请求者发送电子邮件。
应用程序使用django-channels:它是 django,从而免除了为 celery和flower。但它有自己的包袱——在生产过程中 它自己的服务器环境,并依赖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