issue_comments

20 rows where search matches "zeit now" sorted by updated_at descending

View and edit SQL

Suggested facets: issue_url, body, reactions, created_at (date), updated_at (date)

author_association

id html_url issue_url node_id user created_at updated_at ▲ author_association body reactions issue
618070791 https://github.com/simonw/datasette/issues/731#issuecomment-618070791 https://api.github.com/repos/simonw/datasette/issues/731 MDEyOklzc3VlQ29tbWVudDYxODA3MDc5MQ== simonw 9599 2020-04-22T22:21:27Z 2020-04-22T22:21:27Z OWNER

I linked to this from https://github.com/zeit/now/discussions/4055

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Option to automatically configure based on directory layout 605110015
609905777 https://github.com/simonw/datasette/issues/717#issuecomment-609905777 https://api.github.com/repos/simonw/datasette/issues/717 MDEyOklzc3VlQ29tbWVudDYwOTkwNTc3Nw== simonw 9599 2020-04-06T16:41:04Z 2020-04-06T16:43:05Z OWNER

Full traceback from Zeit Now logs:

ERROR: conn=<sqlite3.Connection object at 0x7efc6fb5e2d0>, sql = "select name from sqlite_master where type='table'", params = None: disk I/O error
Traceback (most recent call last):
File "/var/task/datasette/utils/asgi.py", line 121, in route_path
return await view(new_scope, receive, send)
File "/var/task/datasette/utils/asgi.py", line 193, in view
request, **scope["url_route"]["kwargs"]
File "/var/task/datasette/views/base.py", line 61, in head
response = await self.get(*args, **kwargs)
File "/var/task/datasette/views/index.py", line 27, in get
table_names = await db.table_names()
File "/var/task/datasette/database.py", line 221, in table_names
"select name from sqlite_master where type='table'"
File "/var/task/datasette/database.py", line 167, in execute
sql_operation_in_thread
File "/var/task/datasette/database.py", line 114, in execute_against_connection_in_thread
self.ds.executor, in_thread
File "/var/lang/lib/python3.6/concurrent/futures/thread.py", line 56, in run
result = self.fn(*self.args, **self.kwargs)
File "/var/task/datasette/database.py", line 111, in in_thread
return fn(conn)
File "/var/task/datasette/database.py", line 137, in sql_operation_in_thread
cursor.execute(sql, params or {})sqlite3.OperationalError: disk I/O error
{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
See if I can get Datasette working on Zeit Now v2 594189527
603560898 https://github.com/simonw/datasette/issues/705#issuecomment-603560898 https://api.github.com/repos/simonw/datasette/issues/705 MDEyOklzc3VlQ29tbWVudDYwMzU2MDg5OA== simonw 9599 2020-03-24T23:41:32Z 2020-03-24T23:41:32Z OWNER

I can switch over to deploying that using Cloud Run. Unfortunately if I move away from Zeit Now v1 (since it's no longer supported and might stop working) I don't think I'll be able to deploy a permanent URL for every commit hash that I push any more, which is a real shame.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
latest.datasette.io is no longer updating 585626199
596264937 https://github.com/simonw/datasette/issues/697#issuecomment-596264937 https://api.github.com/repos/simonw/datasette/issues/697 MDEyOklzc3VlQ29tbWVudDU5NjI2NDkzNw== simonw 9599 2020-03-08T23:18:48Z 2020-03-08T23:18:48Z OWNER

Cancel that plan: I'm pretty sure the Travis configuration that publishes a demo to Zeit Now and builds a Docker image isn't designed to handle releases that don't correspond to current master. I guess I'll release 0.38 instead.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
index.html is not reliably loaded from a plugin 577578306
503199253 https://github.com/simonw/datasette/issues/513#issuecomment-503199253 https://api.github.com/repos/simonw/datasette/issues/513 MDEyOklzc3VlQ29tbWVudDUwMzE5OTI1Mw== simonw 9599 2019-06-18T15:56:29Z 2019-06-18T15:56:29Z OWNER

Unfortunately not - I really wish this was possible. I have not yet found a great serverless solution for publishing 1GB+ databases - they're too big for Heroku, Cloud Run OR Zeit Now. Once databases get that big the only option I've found is to run a VPS (or an EC2 instance) with a mounted hard drive volume and execute datasette serve on that instance, with an nginx running on port 80 that proxies traffic back to Datasette.

I'd love to figure out a way to make hosting larger databases as easy as it currently is to host small ones.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Is it possible to publish to Heroku despite slug size being too large? 457201907
472875713 https://github.com/simonw/datasette/issues/409#issuecomment-472875713 https://api.github.com/repos/simonw/datasette/issues/409 MDEyOklzc3VlQ29tbWVudDQ3Mjg3NTcxMw== michaelmcandrew 209967 2019-03-14T14:14:39Z 2019-03-14T14:14:39Z NONE

also linking this zeit issue in case it is helpful: https://github.com/zeit/now-examples/issues/163#issuecomment-440125769

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Zeit API v1 does not work for new users - need to migrate to v2 408376825
448437245 https://github.com/simonw/datasette/issues/374#issuecomment-448437245 https://api.github.com/repos/simonw/datasette/issues/374 MDEyOklzc3VlQ29tbWVudDQ0ODQzNzI0NQ== simonw 9599 2018-12-19T01:35:59Z 2018-12-19T01:35:59Z OWNER

Closing this as Zeit went on a different direction with Now v2, so the 100MB limit is no longer a concern.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Get Datasette working with Zeit Now v2's 100MB image size limit 377518499
439762759 https://github.com/simonw/datasette/issues/374#issuecomment-439762759 https://api.github.com/repos/simonw/datasette/issues/374 MDEyOklzc3VlQ29tbWVudDQzOTc2Mjc1OQ== simonw 9599 2018-11-19T03:41:36Z 2018-11-19T03:41:36Z OWNER

It turned out Zeit didn't end up shipping the new 100MB-limit Docker-based Zeit 2.0 after all - they ended up going in a completely different direction, towards lambdas instead (which don't really fit the Datasette model): https://zeit.co/blog/now-2

But... as far as I can tell they have introduced the 100MB image size for all free Zeit accounts ever against their 1.0 platform. So we still need to solve this, or free Zeit users won't be able to use datasette publish now even while 1.0 is still available.

I made some notes on this here: https://simonwillison.net/2018/Nov/19/smaller-python-docker-images/

I've got it working for the Datasette Publish webapp, but I still need to fix datasette publish now to create much smaller patterns.

I know how to do this for regular datasette, but I haven't yet figured out an Alpine Linux pattern for spatialite extras:

https://github.com/simonw/datasette/blob/5e3a432a0caa23837fa58134f69e2f82e4f632a6/datasette/utils.py#L287-L300

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Get Datasette working with Zeit Now v2's 100MB image size limit 377518499
435976262 https://github.com/simonw/datasette/issues/374#issuecomment-435976262 https://api.github.com/repos/simonw/datasette/issues/374 MDEyOklzc3VlQ29tbWVudDQzNTk3NjI2Mg== simonw 9599 2018-11-05T18:11:10Z 2018-11-05T18:11:10Z OWNER

I think there is a useful way forward here though: the image size may be limited to 100MB, but once the instance launches it gets access to a filesystem with a lot more space than that (possibly as much as 15GB given my initial poking around).

So... one potential solution here is to teach Datasette to launch from a smaller image and then download a larger SQLite file from a known URL as part of its initial startup.

Combined with the ability to get Now to always run at least one copy of an instance this could allow Datasette to host much larger SQLite databases on that platform while playing nicely with the Zeit v2 platform.

See also https://github.com/zeit/now-cli/issues/1523

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Get Datasette working with Zeit Now v2's 100MB image size limit 377518499
435767775 https://github.com/simonw/datasette/issues/371#issuecomment-435767775 https://api.github.com/repos/simonw/datasette/issues/371 MDEyOklzc3VlQ29tbWVudDQzNTc2Nzc3NQ== simonw 9599 2018-11-05T06:27:33Z 2018-11-05T06:27:33Z OWNER

This would be fantastic - that tutorial looks like many of the details needed for this.

Do you know if Digital Ocean have the ability to provision URLs for a droplet without you needing to buy your own domain name? Heroku have https://example.herokuapp.com/ and Zeit have https://blah.now.sh/ - does Digital Ocean have an equivalent?

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
datasette publish digitalocean plugin 377156339
433680598 https://github.com/simonw/datasette/issues/366#issuecomment-433680598 https://api.github.com/repos/simonw/datasette/issues/366 MDEyOklzc3VlQ29tbWVudDQzMzY4MDU5OA== simonw 9599 2018-10-28T06:38:43Z 2018-10-28T06:38:43Z OWNER

I've just started running into this as well. Looks like I'll have to anchor to v1 for the moment - I'm hoping the discussion on https://github.com/zeit/now-cli/issues/1523 encourages an increase in this limit policy :/

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Default built image size over Zeit Now 100MiB limit 369716228
429737929 https://github.com/simonw/datasette/issues/366#issuecomment-429737929 https://api.github.com/repos/simonw/datasette/issues/366 MDEyOklzc3VlQ29tbWVudDQyOTczNzkyOQ== slygent 416374 2018-10-15T07:32:57Z 2018-10-15T07:32:57Z NONE

Very hacky solution is to write now.json file forcing the usage of v1 of Zeit cloud, see https://github.com/slygent/datasette/commit/3ab824793ec6534b6dd87078aa46b11c4fa78ea3

This does work, at least.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Default built image size over Zeit Now 100MiB limit 369716228
405975025 https://github.com/simonw/datasette/issues/333#issuecomment-405975025 https://api.github.com/repos/simonw/datasette/issues/333 MDEyOklzc3VlQ29tbWVudDQwNTk3NTAyNQ== simonw 9599 2018-07-18T15:36:11Z 2018-07-18T15:40:04Z OWNER

A force_https_api_urls config option would work here - if set, Datasette will ignore the incoming protocol and always use https. The datasette deploy now command could then add that as an option passed to datasette serve.

This is the pattern which is producing incorrect URLs on Zeit Now, because the Sanic request.url property is not being correctly set.

https://github.com/simonw/datasette/blob/6e37f091edec35e2706197489f54fff5d890c63c/datasette/views/table.py#L653-L655

Suggested help text:

Always use https:// for URLs output as part of Datasette API responses

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Datasette on Zeit Now returns http URLs for facet and next links 338768551
405971920 https://github.com/simonw/datasette/issues/308#issuecomment-405971920 https://api.github.com/repos/simonw/datasette/issues/308 MDEyOklzc3VlQ29tbWVudDQwNTk3MTkyMA== simonw 9599 2018-07-18T15:27:12Z 2018-07-18T15:27:12Z OWNER

It looks like there are a few extra options we should support:

https://devcenter.heroku.com/articles/heroku-cli-commands

  -t, --team=team            team to use
  --region=region            specify region for the app to run in
  --space=space              the private space to create the app in

Since these differ from the options for Zeit Now I think this means splitting up datasette publish now and datasette publish Heroku into separate subcommands.

{
    "total_count": 1,
    "+1": 1,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Support extra Heroku apps:create options - region, space, team 330826972
384362028 https://github.com/simonw/datasette/issues/238#issuecomment-384362028 https://api.github.com/repos/simonw/datasette/issues/238 MDEyOklzc3VlQ29tbWVudDM4NDM2MjAyOA== simonw 9599 2018-04-25T17:07:11Z 2018-04-25T17:07:11Z OWNER

On further thought: this is actually only an issue for immutable deployments to platforms like Zeit Now and Heroku.

As such, adding it to datasette serve feels clumsy. Maybe datasette publish should instead gain the ability to optionally install an extra mechanism that periodically pulls a fresh copy of metadata.json from a URL.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
External metadata.json 317714268
350496277 https://github.com/simonw/datasette/issues/157#issuecomment-350496277 https://api.github.com/repos/simonw/datasette/issues/157 MDEyOklzc3VlQ29tbWVudDM1MDQ5NjI3Nw== simonw 9599 2017-12-09T18:29:41Z 2017-12-09T18:29:41Z OWNER

Example usage:

datasette package --static css:extra-css/ --static js:extra-js/ \
    sf-trees.db --template-dir templates/ --tag sf-trees --branch master

This creates a local Docker image that includes copies of the templates/,
extra-css/ and extra-js/ directories. You can then run it like this:

docker run -p 8001:8001 sf-trees

For publishing to Zeit now:

datasette publish now --static css:extra-css/ --static js:extra-js/ \
    sf-trees.db --template-dir templates/ --name sf-trees --branch master

Example: https://sf-trees-wbihszoazc.now.sh/sf-trees-02c8ef1/Street_Tree_List

For publishing to Heroku:

datasette publish heroku --static css:extra-css/ --static js:extra-js/ \
    sf-trees.db --template-dir templates/ --branch master
{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Teach "datasette publish" about custom template directories 278190321
350496258 https://github.com/simonw/datasette/issues/160#issuecomment-350496258 https://api.github.com/repos/simonw/datasette/issues/160 MDEyOklzc3VlQ29tbWVudDM1MDQ5NjI1OA== simonw 9599 2017-12-09T18:29:28Z 2017-12-09T18:29:28Z OWNER

Example usage:

datasette package --static css:extra-css/ --static js:extra-js/ \
    sf-trees.db --template-dir templates/ --tag sf-trees --branch master

This creates a local Docker image that includes copies of the templates/,
extra-css/ and extra-js/ directories. You can then run it like this:

docker run -p 8001:8001 sf-trees

For publishing to Zeit now:

datasette publish now --static css:extra-css/ --static js:extra-js/ \
    sf-trees.db --template-dir templates/ --name sf-trees --branch master

Example: https://sf-trees-wbihszoazc.now.sh/sf-trees-02c8ef1/Street_Tree_List

For publishing to Heroku:

datasette publish heroku --static css:extra-css/ --static js:extra-js/ \
    sf-trees.db --template-dir templates/ --branch master
{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Ability to bundle and serve additional static files 278208011
344472313 https://github.com/simonw/datasette/pull/94#issuecomment-344472313 https://api.github.com/repos/simonw/datasette/issues/94 MDEyOklzc3VlQ29tbWVudDM0NDQ3MjMxMw== simonw 9599 2017-11-15T03:08:00Z 2017-11-15T03:08:00Z OWNER

Works for me. I'm going to land this.

Just one thing:

simonw$ docker run --rm -t -i -p 9001:8001 c408e8cfbe40 datasette publish now
 The publish command requires "now" to be installed and configured 
Follow the instructions at https://zeit.co/now#whats-now

Maybe we should have the Docker container install the "now" client? Not sure how much size that would add though. I think it's OK without for the moment.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Initial add simple prod ready Dockerfile refs #57 273961179
343788581 https://github.com/simonw/datasette/issues/71#issuecomment-343788581 https://api.github.com/repos/simonw/datasette/issues/71 MDEyOklzc3VlQ29tbWVudDM0Mzc4ODU4MQ== simonw 9599 2017-11-13T01:48:17Z 2017-11-13T01:48:17Z OWNER

I had to add a rule like this to get letsencrypt certificates on now.sh working: https://github.com/zeit/now-cli/issues/188#issuecomment-270105052

I also have to flip this switch off every time I want to add a new alias:

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Set up some example datasets on a Cloudflare-backed domain 273278840
343780539 https://github.com/simonw/datasette/issues/71#issuecomment-343780539 https://api.github.com/repos/simonw/datasette/issues/71 MDEyOklzc3VlQ29tbWVudDM0Mzc4MDUzOQ== simonw 9599 2017-11-13T00:13:29Z 2017-11-13T00:19:46Z OWNER

https://zeit.co/docs/features/dns is docs

now domain add -e datasettes.com

I had to set up a custom TXT record on _now.datasettes.com to get this to work.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Set up some example datasets on a Cloudflare-backed domain 273278840

Advanced export

JSON shape: default, array, newline-delimited, object

CSV options:

CREATE TABLE [issue_comments] (
   [html_url] TEXT,
   [issue_url] TEXT,
   [id] INTEGER PRIMARY KEY,
   [node_id] TEXT,
   [user] INTEGER REFERENCES [users]([id]),
   [created_at] TEXT,
   [updated_at] TEXT,
   [author_association] TEXT,
   [body] TEXT,
   [reactions] TEXT,
   [issue] INTEGER REFERENCES [issues]([id])
);
CREATE INDEX [idx_issue_comments_issue]
                ON [issue_comments] ([issue]);
CREATE INDEX [idx_issue_comments_user]
                ON [issue_comments] ([user]);
Powered by Datasette · Query took 74.545ms · About: github-to-sqlite