issue_comments
10,495 rows sorted by updated_at descending
This data as json, CSV (advanced)
issue >30
- Show column metadata plus links for foreign keys on arbitrary query results 50
- Redesign default .json format 48
- JavaScript plugin hooks mechanism similar to pluggy 47
- Updated Dockerfile with SpatiaLite version 5.0 45
- Port Datasette to ASGI 42
- Authentication (and permissions) as a core concept 40
- Deploy a live instance of demos/apache-proxy 34
- await datasette.client.get(path) mechanism for executing internal requests 33
- Maintain an in-memory SQLite table of connected databases and their tables 32
- Ability to sort (and paginate) by column 31
- link_or_copy_directory() error - Invalid cross-device link 28
- Export to CSV 27
- base_url configuration setting 27
- Documentation with recommendations on running Datasette in production without using Docker 27
- Support cross-database joins 26
- Ability for a canned query to write to the database 26
- table.transform() method for advanced alter table 26
- Proof of concept for Datasette on AWS Lambda with EFS 25
- WIP: Add Gmail takeout mbox import 25
- Redesign register_output_renderer callback 24
- New pattern for views that return either JSON or HTML, available for plugins 24
- "datasette insert" command and plugin hook 23
- Datasette Plugins 22
- .json and .csv exports fail to apply base_url 22
- Idea: import CSV to memory, run SQL, export in a single command 22
- table.extract(...) method and "sqlite-utils extract" command 21
- Database page loads too slowly with many large tables (due to table counts) 21
- ?sort=colname~numeric to sort by by column cast to real 21
- base_url is omitted in JSON and CSV views 21
- Handle spatialite geometry columns better 20
- …
id | html_url | issue_url | node_id | user | created_at | updated_at ▲ | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
981172801 | https://github.com/simonw/datasette/issues/1518#issuecomment-981172801 | https://api.github.com/repos/simonw/datasette/issues/1518 | IC_kwDOBm6k_c46e4JB | simonw 9599 | 2021-11-28T23:23:51Z | 2021-11-28T23:23:51Z | OWNER | (I could experiment with merging the two tables by adding a temporary undocumented |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Complete refactor of TableView and table.html template 1058072543 | |
981172385 | https://github.com/simonw/datasette/issues/1518#issuecomment-981172385 | https://api.github.com/repos/simonw/datasette/issues/1518 | IC_kwDOBm6k_c46e4Ch | simonw 9599 | 2021-11-28T23:21:26Z | 2021-11-28T23:21:26Z | OWNER | Aside: is there any reason this work can't complete the long-running goal of merging the TableView and QueryView, such that most of the features available for tables become available for arbitrary queries too? I had already mentally committed to implementing facets for queries, but I just realized that filters could work too - using either a CTE or a nested query. Pagination is the one holdout here, since table pagination uses keyset pagination over a known order. But maybe arbitrary queries can only be paginated off you order them first? |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Complete refactor of TableView and table.html template 1058072543 | |
981153186 | https://github.com/simonw/datasette/issues/1518#issuecomment-981153186 | https://api.github.com/repos/simonw/datasette/issues/1518 | IC_kwDOBm6k_c46ezWi | simonw 9599 | 2021-11-28T21:13:50Z | 2021-11-28T21:13:50Z | OWNER | I'm also going to use the new
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Complete refactor of TableView and table.html template 1058072543 | |
981149531 | https://github.com/simonw/datasette/issues/1534#issuecomment-981149531 | https://api.github.com/repos/simonw/datasette/issues/1534 | IC_kwDOBm6k_c46eydb | simonw 9599 | 2021-11-28T20:48:54Z | 2021-11-28T20:48:54Z | OWNER | If I'm going to do this, is there value in also spotting |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Maybe return JSON from HTML pages if `Accept: application/json` is sent 1065432388 | |
981149039 | https://github.com/simonw/datasette/issues/1533#issuecomment-981149039 | https://api.github.com/repos/simonw/datasette/issues/1533 | IC_kwDOBm6k_c46eyVv | simonw 9599 | 2021-11-28T20:45:36Z | 2021-11-28T20:45:36Z | OWNER | I built an initial prototype of this in a branch: https://github.com/simonw/datasette/commit/e0a84691c2959f2d1d76948574c9c4a910c7556c - which exposed even more flaws in the way |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add `Link: rel="alternate"` header pointing to JSON for a table/query 1065431383 | |
979442854 | https://github.com/simonw/sqlite-utils/pull/333#issuecomment-979442854 | https://api.github.com/repos/simonw/sqlite-utils/issues/333 | IC_kwDOCGYnMM46YRym | simonw 9599 | 2021-11-25T19:47:26Z | 2021-11-25T19:47:26Z | OWNER | I just remembered that there's one other place that this could fit: as a Datasette "insert" plugin. This is vaporware at the moment, but the idea is that Datasette itself could grow a mechanism for importing data, that's driven by plugins. Out of the box Datasette would be able to import CSV and CSV files, similar to The neat thing about having it as a Datasette plugin is that one plugin would enable three different ways of importing data:
I started fleshing out this idea quite a while ago but didn't make much concrete progress, maybe I should revisit it: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add functionality to read Parquet files. 1039037439 | |
979345527 | https://github.com/simonw/sqlite-utils/pull/333#issuecomment-979345527 | https://api.github.com/repos/simonw/sqlite-utils/issues/333 | IC_kwDOCGYnMM46X6B3 | Florents-Tselai 2118708 | 2021-11-25T16:31:47Z | 2021-11-25T16:31:47Z | NONE | Thanks for your reply @simonw . Tbh, my first attempt was actually the I don't think plugins make much sense either. Probably defeats the purpose of simplicity: simple database along with a pip-able package. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add functionality to read Parquet files. 1039037439 | |
976117989 | https://github.com/simonw/datasette/issues/1522#issuecomment-976117989 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46LmDl | glasnt 813732 | 2021-11-23T03:00:34Z | 2021-11-23T03:00:34Z | CONTRIBUTOR | I tried deploying the most recent version of the Dockerfile in this thread (link to comment), and after trying a few different different combinations, I was only successful when I used Using this method, I got a very similar issue to you: The first time I'd load the site I'd get a 503. But after that first load, I didn't get the issue again. It would re-occur if the service started from cold boot. I suspect this is a race condition in the supervisord configuration. The errors I got were the same Looking at the order of logs getting back, the processes reported successfully completing loading after the first 503 was returned, so that makes me think race condition. I can replicate this locally, if I Unfortunately supervisor/supervisor issue 122 (not linking as to prevent cross-project link spam) seems to say that dependency chaining is a feature that's been asked for for a long time, but hasn't been implemented. You could try some suggestions in that thread. |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
976023405 | https://github.com/simonw/datasette/issues/1522#issuecomment-976023405 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46LO9t | steren 360895 | 2021-11-23T00:08:07Z | 2021-11-23T00:08:07Z | NONE | If you suspect that Cloud Run throttled CPU could be the cause, you can request to have CPU always allocated with It could also be the Cloud Run sandbox that somehow gets in the way here, in which case I recommend testing with the second generation execution environment: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
975955589 | https://github.com/simonw/datasette/issues/1528#issuecomment-975955589 | https://api.github.com/repos/simonw/datasette/issues/1528 | IC_kwDOBm6k_c46K-aF | asg017 15178711 | 2021-11-22T22:00:30Z | 2021-11-22T22:00:30Z | CONTRIBUTOR | Oh, another thing to consider: I believe this would be the first |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add new `"sql_file"` key to Canned Queries in metadata? 1060631257 | |
975110692 | https://github.com/simonw/datasette/issues/1526#issuecomment-975110692 | https://api.github.com/repos/simonw/datasette/issues/1526 | IC_kwDOBm6k_c46HwIk | simonw 9599 | 2021-11-22T04:49:44Z | 2021-11-22T04:49:44Z | OWNER | Fixed in the 0.12 release of that plugin: https://github.com/simonw/datasette-publish-vercel/releases/tag/0.12 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add to vercel.json, rather than overwriting it. 1059549523 | |
975073308 | https://github.com/simonw/datasette/issues/1526#issuecomment-975073308 | https://api.github.com/repos/simonw/datasette/issues/1526 | IC_kwDOBm6k_c46HnAc | simonw 9599 | 2021-11-22T04:13:46Z | 2021-11-22T04:13:46Z | OWNER | Addressing that over here (hadn't seen that issue yet, thanks for the prod): https://github.com/simonw/datasette-publish-vercel/issues/51#issuecomment-975073026 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add to vercel.json, rather than overwriting it. 1059549523 | |
974979785 | https://github.com/simonw/datasette/issues/1527#issuecomment-974979785 | https://api.github.com/repos/simonw/datasette/issues/1527 | IC_kwDOBm6k_c46HQLJ | simonw 9599 | 2021-11-22T01:02:57Z | 2021-11-22T01:03:19Z | OWNER | I think the root cause is this hidden form field on https://latest.datasette.io/fixtures/facetable?_facet=_neighborhood&_neighborhood__exact=Downtown
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Columns starting with an underscore behave poorly in filters 1059555791 | |
974913180 | https://github.com/simonw/datasette/issues/1525#issuecomment-974913180 | https://api.github.com/repos/simonw/datasette/issues/1525 | IC_kwDOBm6k_c46G_6c | simonw 9599 | 2021-11-21T22:57:08Z | 2021-11-21T22:57:08Z | OWNER | https://latest.datasette.io/fixtures/facetable can't quite demonstrate the bug because |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"Links from other tables" broken for columns starting with underscore 1059509927 | |
974912985 | https://github.com/simonw/datasette/issues/1525#issuecomment-974912985 | https://api.github.com/repos/simonw/datasette/issues/1525 | IC_kwDOBm6k_c46G_3Z | simonw 9599 | 2021-11-21T22:55:42Z | 2021-11-21T22:55:42Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"Links from other tables" broken for columns starting with underscore 1059509927 | ||
974765825 | https://github.com/simonw/datasette/issues/93#issuecomment-974765825 | https://api.github.com/repos/simonw/datasette/issues/93 | IC_kwDOBm6k_c46Gb8B | simonw 9599 | 2021-11-21T07:00:21Z | 2021-11-21T07:00:21Z | OWNER | Closing this in favour of Datasette Desktop: https://datasette.io/desktop |
{ "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 1, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Package as standalone binary 273944952 | |
974754412 | https://github.com/simonw/sqlite-utils/pull/333#issuecomment-974754412 | https://api.github.com/repos/simonw/sqlite-utils/issues/333 | IC_kwDOCGYnMM46GZJs | simonw 9599 | 2021-11-21T04:35:32Z | 2021-11-21T04:35:32Z | OWNER | Some other recent projects (like trying to get this library to work in JupyterLite) have made me much more cautious about adding new dependencies, especially dependencies like There are a few ways this could work though:
My favourite option is I find the concept of plugins for |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add functionality to read Parquet files. 1039037439 | |
974725814 | https://github.com/simonw/datasette/issues/1524#issuecomment-974725814 | https://api.github.com/repos/simonw/datasette/issues/1524 | IC_kwDOBm6k_c46GSK2 | simonw 9599 | 2021-11-20T23:24:01Z | 2021-11-20T23:24:01Z | OWNER | I noticed that |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Improve Apache proxy documentation, link to demo 1059219106 | |
974721652 | https://github.com/simonw/datasette/issues/1524#issuecomment-974721652 | https://api.github.com/repos/simonw/datasette/issues/1524 | IC_kwDOBm6k_c46GRJ0 | simonw 9599 | 2021-11-20T22:41:03Z | 2021-11-20T22:41:03Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Improve Apache proxy documentation, link to demo 1059219106 | ||
974711959 | https://github.com/simonw/datasette/issues/1426#issuecomment-974711959 | https://api.github.com/repos/simonw/datasette/issues/1426 | IC_kwDOBm6k_c46GOyX | tannewt 52649 | 2021-11-20T21:11:51Z | 2021-11-20T21:11:51Z | NONE | I think another thing would be to make |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Manage /robots.txt in Datasette core, block robots by default 964322136 | |
974707878 | https://github.com/simonw/datasette/issues/1524#issuecomment-974707878 | https://api.github.com/repos/simonw/datasette/issues/1524 | IC_kwDOBm6k_c46GNym | simonw 9599 | 2021-11-20T20:34:51Z | 2021-11-20T20:38:29Z | OWNER | I pointed Then I asked Fly to issue a LetsEncrypt certificate for that: ``` % flyctl certs create datasette-apache-proxy-demo.datasette.io About 53 seconds later:% flyctl certs show datasette-apache-proxy-demo.datasette.io The certificate for datasette-apache-proxy-demo.datasette.io has been issued. Hostname = datasette-apache-proxy-demo.datasette.io DNS Provider = constellix Certificate Authority = Let's Encrypt Issued = ecdsa,rsa Added to App = 53 seconds ago Source = fly ``` https://datasette-apache-proxy-demo.datasette.io/ works now - I'll use that in the documentation. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Improve Apache proxy documentation, link to demo 1059219106 | |
974704254 | https://github.com/simonw/datasette/issues/1524#issuecomment-974704254 | https://api.github.com/repos/simonw/datasette/issues/1524 | IC_kwDOBm6k_c46GM5- | simonw 9599 | 2021-11-20T20:03:51Z | 2021-11-20T20:22:52Z | OWNER | I'm also going to extract the Apache config files from https://github.com/simonw/datasette/blob/250db8192cb8aba5eb8cd301ccc2a49525bc3d24/demos/apache-proxy/Dockerfile into a separate file to make it easier to read. (The supervisor config needs to be dynamically constructed to include $DATASETTE_REF so I will leave it where it is.) |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Improve Apache proxy documentation, link to demo 1059219106 | |
974701788 | https://github.com/simonw/datasette/issues/1519#issuecomment-974701788 | https://api.github.com/repos/simonw/datasette/issues/1519 | IC_kwDOBm6k_c46GMTc | simonw 9599 | 2021-11-20T19:42:29Z | 2021-11-20T19:42:29Z | OWNER |
On further thought I'm not going to do this. Having Datasette work behind a proxy the way it does right now is clearly easy for people to deploy (now that I've fixed the bugs) and I trust my improved tests to catch problems in the future. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url is omitted in JSON and CSV views 1058790545 | |
974697824 | https://github.com/simonw/datasette/issues/1519#issuecomment-974697824 | https://api.github.com/repos/simonw/datasette/issues/1519 | IC_kwDOBm6k_c46GLVg | simonw 9599 | 2021-11-20T19:11:21Z | 2021-11-20T19:11:21Z | OWNER | OK, i think I got all of them this time! The latest demo is now live at https://datasette-apache-proxy-demo.fly.dev/prefix/fixtures/sortable?_facet=pk2 I'm closing this issue, but feel free to re-open it if you spot any that I missed. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url is omitted in JSON and CSV views 1058790545 | |
974695111 | https://github.com/simonw/datasette/issues/1522#issuecomment-974695111 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46GKrH | simonw 9599 | 2021-11-20T18:52:11Z | 2021-11-20T18:52:11Z | OWNER | The demo is now live on https://datasette-apache-proxy-demo.fly.dev/prefix/ |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974693350 | https://github.com/simonw/datasette/issues/1522#issuecomment-974693350 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46GKPm | simonw 9599 | 2021-11-20T18:39:27Z | 2021-11-20T18:39:27Z | OWNER | I'm going to go with Fly instead for this, especially as I can keep it within their free tier (and iI want to get more familiar with their platform). |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974692546 | https://github.com/simonw/datasette/issues/1522#issuecomment-974692546 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46GKDC | simonw 9599 | 2021-11-20T18:34:13Z | 2021-11-20T18:34:13Z | OWNER | Here's why it failed - the https://floral-dust-4577.fly.dev/prefix/ - not seeing any 503 errors there. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974685095 | https://github.com/simonw/datasette/issues/1522#issuecomment-974685095 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46GIOn | simonw 9599 | 2021-11-20T17:42:25Z | 2021-11-20T17:42:25Z | OWNER | I tried to deploy it to Fly - initially using Almost got it working, but it failed the health check:
I didn't pass the build argument, trying again with flyctl deployapache-proxy % flyctl deploy --build-arg DATASETTE_REF=main Update available 0.0.229 -> v0.0.255 Run "flyctl version update" to upgrade Deploying floral-dust-4577 ==> Validating app configuration --> Validating app configuration done Services TCP 80/443 ⇢ 8080 ==> Creating build context --> Creating build context done ==> Building image with Docker Sending build context to Docker daemon 8.704kB [+] Building 15.7s (27/27) ... 0.0s ==> Pushing image to fly The push refers to repository [registry.fly.io/floral-dust-4577] 9bf88c92aa2a: Pushed 3d61728b8391: Pushed ... --> Pushing image done Image: registry.fly.io/floral-dust-4577:deployment-1637429501 Image size: 276 MB ==> Creating release Release v2 created You can detach the terminal anytime without stopping the deployment Monitoring Deployment 1 desired, 1 placed, 0 healthy, 0 unhealthy [health checks: 1 total, 1 critical] 1 desired, 1 placed, 0 healthy, 1 unhealthy [health checks: 1 total, 1 critical] v0 failed - Failed due to unhealthy allocations - no stable job version to auto revert to Failed Instances ==> Failure #1 Instance
ID = 36adac86 Recent Events
TIMESTAMP TYPE MESSAGE Recent Logs
2021-11-20T17:32:56Z [info] Unpacking image
2021-11-20T17:33:01Z [info] Preparing kernel init
2021-11-20T17:33:01Z [info] Configuring firecracker
2021-11-20T17:33:02Z [info] Starting virtual machine
2021-11-20T17:33:02Z [info] Starting init (commit: 7943db6)...
2021-11-20T17:33:02Z [info] Preparing to run: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974683220 | https://github.com/simonw/datasette/issues/1522#issuecomment-974683220 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46GHxU | simonw 9599 | 2021-11-20T17:29:12Z | 2021-11-20T17:29:12Z | OWNER |
That's a great idea. I'll try running on a non-Knative host too (probably Fly - though they actually run containers using Firecracker which ends up being completely different). Cloud Run are the only Knative host I've used, know of any others aside from Scaleway? They look like they're worth getting familiar with. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974682507 | https://github.com/simonw/datasette/issues/1522#issuecomment-974682507 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46GHmL | simonw 9599 | 2021-11-20T17:24:13Z | 2021-11-20T17:24:13Z | OWNER | I'm going to leave this issue open, tag it as "help wanted" and cross my fingers that someone with Cloud Run deep expertise takes an interest in figuring out what's going wrong here! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974607456 | https://github.com/simonw/datasette/issues/1522#issuecomment-974607456 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46F1Rg | mrchrisadams 17906 | 2021-11-20T07:10:11Z | 2021-11-20T07:10:11Z | NONE | As a a sanity check, would it be worth looking at trying to push the multi-process container on another provider of a knative / cloud run / tekton ? I have a somewhat similar use case for a future proejct, so i'm been very grateful to you sharing all the progress in this issue. As I understand it, Scaleway also offer a very similar offering using what appear to be many similar components that might at least see if it's an issue with more than one knative based FaaS provider https://www.scaleway.com/en/serverless-containers/ https://developers.scaleway.com/en/products/containers/api/#main-features |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974605529 | https://github.com/simonw/datasette/issues/1522#issuecomment-974605529 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46F0zZ | simonw 9599 | 2021-11-20T06:52:21Z | 2021-11-20T06:52:21Z | OWNER | I've now tried both Debian and Alpine, and I've tried both |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974605128 | https://github.com/simonw/datasette/issues/1522#issuecomment-974605128 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46F0tI | simonw 9599 | 2021-11-20T06:47:59Z | 2021-11-20T06:47:59Z | OWNER | I managed to port the whole thing over to Debian - which took a lot of work because their packaged Apache 2 works very differently from the Alpine one. Once again... I got it working fine on my laptop, but the image deployed to Cloud Run throws 503 errors! ```dockerfile FROM python:3.9.7-slim-bullseye RUN apt-get update && \ apt-get install -y apache2 supervisor && \ apt clean && \ rm -rf /var/lib/apt && \ rm -rf /var/lib/dpkg/info/* Apache environment, copied fromhttps://github.com/ijklim/laravel-benfords-law-app/blob/e9bf385dcaddb62ea466a7b245ab6e4ef708c313/docker/os/DockerfileENV APACHE_DOCUMENT_ROOT=/var/www/html/public ENV APACHE_RUN_USER www-data ENV APACHE_RUN_GROUP www-data ENV APACHE_PID_FILE /var/run/apache2.pid ENV APACHE_RUN_DIR /var/run/apache2 ENV APACHE_LOCK_DIR /var/lock/apache2 ENV APACHE_LOG_DIR /var/log RUN ln -sf /dev/stdout /var/log/apache2-access.log RUN ln -sf /dev/stderr /var/log/apache2-error.log RUN mkdir -p $APACHE_RUN_DIR $APACHE_LOCK_DIR RUN a2enmod proxy RUN a2enmod proxy_http RUN a2enmod headers ARG DATASETTE_REF RUN pip install https://github.com/simonw/datasette/archive/${DATASETTE_REF}.zip Append this to the end of the default httpd.conf fileRUN echo '\n\ <Directory /app/html/>\n\ Options Indexes FollowSymLinks\n\ AllowOverride None\n\ Require all granted\n\ </Directory>\n\ \n\ <VirtualHost *:80>\n\ ServerName localhost\n\ DocumentRoot /app/html\n\ ProxyPreserveHost On\n\ ProxyPass /prefix/ http://127.0.0.1:8001/\n\ Header add X-Proxied-By "Apache2"\n\ </VirtualHost>\n\ ' > /etc/apache2/sites-enabled/000-default.conf WORKDIR /app RUN mkdir -p /app/html RUN echo 'Datasette' > /app/html/index.html ADD https://latest.datasette.io/fixtures.db /app/fixtures.db EXPOSE 80 RUN echo "[supervisord]" >> /app/supervisord.conf RUN echo "nodaemon=true" >> /app/supervisord.conf RUN echo "" >> /app/supervisord.conf RUN echo "[program:apache2]" >> /app/supervisord.conf RUN echo "command=apache2 -D FOREGROUND" >> /app/supervisord.conf RUN echo "" >> /app/supervisord.conf RUN echo "[program:datasette]" >> /app/supervisord.conf RUN echo "command=datasette /app/fixtures.db --setting base_url '/prefix/' --version-note '${DATASETTE_REF}' -h 0.0.0.0 -p 8001" >> /app/supervisord.conf CMD ["/usr/bin/supervisord", "-c", "/app/supervisord.conf"] ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974602459 | https://github.com/simonw/datasette/issues/1522#issuecomment-974602459 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46F0Db | simonw 9599 | 2021-11-20T06:15:58Z | 2021-11-20T06:15:58Z | OWNER | First I'm going to try using Debian Buster as the base image instead of Alpine. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974585374 | https://github.com/simonw/datasette/issues/1522#issuecomment-974585374 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46Fv4e | simonw 9599 | 2021-11-20T03:28:58Z | 2021-11-20T03:28:58Z | OWNER | Based on https://medium.com/google-cloud/init-process-for-containers-d03a471fa0cc I might try s6. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974578141 | https://github.com/simonw/datasette/issues/1522#issuecomment-974578141 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46FuHd | simonw 9599 | 2021-11-20T02:27:23Z | 2021-11-20T02:27:23Z | OWNER | Aha! This could be the clue I was looking for: https://www.reddit.com/r/googlecloud/comments/fmkx63/comment/fl5csty/?utm_source=reddit&utm_medium=web2x&context=3
Maybe the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974577949 | https://github.com/simonw/datasette/issues/1522#issuecomment-974577949 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46FuEd | simonw 9599 | 2021-11-20T02:26:09Z | 2021-11-20T02:26:17Z | OWNER | So frustrating, that's giving me the same problem after being deployed! 503 errors for the first while, then it starts working. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974577565 | https://github.com/simonw/datasette/issues/1522#issuecomment-974577565 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46Ft-d | simonw 9599 | 2021-11-20T02:23:07Z | 2021-11-20T02:23:07Z | OWNER | OK, that works on my laptop - and Ctrl+C quits it, which is nice:
RUN apk add --no-cache \ apache2 \ apache2-proxy \ supervisor \ bash ARG DATASETTE_REF RUN pip install https://github.com/simonw/datasette/archive/${DATASETTE_REF}.zip Append this to the end of the default httpd.conf fileRUN echo -e 'ServerName localhost\n\ \n\ <Proxy *>\n\ Order deny,allow\n\ Allow from all\n\ </Proxy>\n\ \n\ ProxyPreserveHost On\n\ ProxyPass /prefix/ http://127.0.0.1:8001/\n\ Header add X-Proxied-By "Apache2"' >> /etc/apache2/httpd.conf RUN echo 'Datasette' > /var/www/localhost/htdocs/index.html WORKDIR /app ADD https://latest.datasette.io/fixtures.db /app/fixtures.db EXPOSE 80 RUN echo "[supervisord]" >> /app/supervisord.conf RUN echo "nodaemon=true" >> /app/supervisord.conf RUN echo "" >> /app/supervisord.conf RUN echo "[program:httpd]" >> /app/supervisord.conf RUN echo "command=httpd -D FOREGROUND" >> /app/supervisord.conf RUN echo "" >> /app/supervisord.conf RUN echo "[program:datasette]" >> /app/supervisord.conf RUN echo "command=datasette /app/fixtures.db --setting base_url '/prefix/' --version-note '${DATASETTE_REF}' -h 0.0.0.0 -p 8001" >> /app/supervisord.conf CMD ["/usr/bin/supervisord", "-c", "/app/supervisord.conf"] ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974577082 | https://github.com/simonw/datasette/issues/1522#issuecomment-974577082 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46Ft26 | simonw 9599 | 2021-11-20T02:19:27Z | 2021-11-20T02:19:27Z | OWNER | https://docs.docker.com/config/containers/multi-service_container/ suggests https://stackoverflow.com/a/49100302/6083 has a neat looking recipe for than in Alpine:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974576624 | https://github.com/simonw/datasette/issues/1522#issuecomment-974576624 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46Ftvw | simonw 9599 | 2021-11-20T02:16:12Z | 2021-11-20T02:16:12Z | OWNER | Again, that approach worked on my laptop but when deployed to Cloud Run mostly gave me 503 errors for the I did this: ```Dockerfile RUN echo "#!/bin/bash" >> start.sh Start Datasette running in background with &RUN echo "datasette /app/fixtures.db --setting base_url '/prefix/' --version-note '${DATASETTE_REF}' -h 0.0.0.0 -p 8001 &" >> /app/start.sh RUN echo "httpd -D FOREGROUND" >> /app/start.sh RUN chmod +x /app/start.sh CMD /app/start.sh ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974576436 | https://github.com/simonw/datasette/issues/1522#issuecomment-974576436 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46Fts0 | simonw 9599 | 2021-11-20T02:14:45Z | 2021-11-20T02:14:45Z | OWNER | I'm going to try running Apache with |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974575512 | https://github.com/simonw/datasette/issues/1522#issuecomment-974575512 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46FteY | simonw 9599 | 2021-11-20T02:09:20Z | 2021-11-20T02:09:20Z | OWNER |
That eventually failed, but I did get these in the build logs: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974573616 | https://github.com/simonw/datasette/issues/1522#issuecomment-974573616 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46FtAw | simonw 9599 | 2021-11-20T01:58:44Z | 2021-11-20T01:58:44Z | OWNER | Deploy to Cloud Run appears to hang here:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974572505 | https://github.com/simonw/datasette/issues/1522#issuecomment-974572505 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46FsvZ | simonw 9599 | 2021-11-20T01:50:48Z | 2021-11-20T01:51:41Z | OWNER | I figured out a recipe to run openrc gives us rc-serviceRUN apk add --no-cache \ openrc \ apache2 \ apache2-proxy \ bash ARG DATASETTE_REF RUN pip install https://github.com/simonw/datasette/archive/${DATASETTE_REF}.zip Append this to the end of the default httpd.conf fileRUN echo -e 'ServerName localhost\n\ \n\ <Proxy *>\n\ Order deny,allow\n\ Allow from all\n\ </Proxy>\n\ \n\ ProxyPreserveHost On\n\ ProxyPass /prefix/ http://127.0.0.1:8001/\n\ Header add X-Proxied-By "Apache2"' >> /etc/apache2/httpd.conf RUN echo 'Datasette' > /var/www/localhost/htdocs/index.html WORKDIR /app ADD https://latest.datasette.io/fixtures.db /app/fixtures.db EXPOSE 80 RUN echo -e "#!/bin/bash\nopenrc default\nrc-service apache2 start;\ndatasette /app/fixtures.db --setting base_url '/prefix/' --version-note '${DATASETTE_REF}' -h 0.0.0.0 -p 8001" > /app/start.shRUN echo "#!/bin/bash" >> start.sh RUN echo "openrc default" >> start.sh RUN echo "rc-service apache2 start" >> start.sh RUN echo "datasette /app/fixtures.db --setting base_url '/prefix/' --version-note '${DATASETTE_REF}' -h 0.0.0.0 -p 8001" >> /app/start.sh RUN chmod +x /app/start.sh CMD /app/start.sh ``` I'm going to try this on Cloud Run and see if it fixes the 503s One annoying thing about this: Ctrl+C on my laptop no longer stops the container, I have to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974565816 | https://github.com/simonw/datasette/issues/1522#issuecomment-974565816 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46FrG4 | simonw 9599 | 2021-11-20T01:13:39Z | 2021-11-20T01:13:39Z | OWNER | I have a hunch that running |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974565392 | https://github.com/simonw/datasette/issues/1522#issuecomment-974565392 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46FrAQ | simonw 9599 | 2021-11-20T01:11:20Z | 2021-11-20T01:11:20Z | OWNER | Yup, that fixed it. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974564712 | https://github.com/simonw/datasette/issues/1522#issuecomment-974564712 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46Fq1o | simonw 9599 | 2021-11-20T01:07:49Z | 2021-11-20T01:10:48Z | OWNER | https://apache-proxy-demo.datasette.io/prefix/fixtures/compound_three_primary_keys has broken suggested facet links - they go to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974562942 | https://github.com/simonw/datasette/issues/1519#issuecomment-974562942 | https://api.github.com/repos/simonw/datasette/issues/1519 | IC_kwDOBm6k_c46FqZ- | simonw 9599 | 2021-11-20T00:59:32Z | 2021-11-20T00:59:32Z | OWNER | Ouch a nasty bug crept through there - https://datasette-apache-proxy-demo-j7hipcg4aq-uc.a.run.app/prefix/fixtures/compound_three_primary_keys says
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url is omitted in JSON and CSV views 1058790545 | |
974561593 | https://github.com/simonw/datasette/issues/1519#issuecomment-974561593 | https://api.github.com/repos/simonw/datasette/issues/1519 | IC_kwDOBm6k_c46FqE5 | simonw 9599 | 2021-11-20T00:53:19Z | 2021-11-20T00:53:19Z | OWNER | Adding that test found (I hope!) all of the remaining |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url is omitted in JSON and CSV views 1058790545 | |
974559176 | https://github.com/simonw/datasette/issues/1519#issuecomment-974559176 | https://api.github.com/repos/simonw/datasette/issues/1519 | IC_kwDOBm6k_c46FpfI | simonw 9599 | 2021-11-20T00:42:08Z | 2021-11-20T00:42:08Z | OWNER |
This worked, I managed to get the tests to fail! Here's the change I made: ```diff diff --git a/tests/test_html.py b/tests/test_html.py index f24165b..dbdfe59 100644 --- a/tests/test_html.py +++ b/tests/test_html.py @@ -1614,12 +1614,19 @@ def test_metadata_sort_desc(app_client): "/fixtures/compound_three_primary_keys/a,a,a", "/fixtures/paginated_view", "/fixtures/facetable", + "/fixtures?sql=select+1", ], ) -def test_base_url_config(app_client_base_url_prefix, path): +@pytest.mark.parametrize("use_prefix", (True, False)) +def test_base_url_config(app_client_base_url_prefix, path, use_prefix): client = app_client_base_url_prefix - response = client.get("/prefix/" + path.lstrip("/")) + path_to_get = path + if use_prefix: + path_to_get = "/prefix/" + path.lstrip("/") + response = client.get(path_to_get) soup = Soup(response.body, "html.parser") + if path == "/fixtures?sql=select+1": + assert False for el in soup.findAll(["a", "link", "script"]): if "href" in el.attrs: href = el["href"] @@ -1642,11 +1649,12 @@ def test_base_url_config(app_client_base_url_prefix, path): # If this has been made absolute it may start http://localhost/ if href.startswith("http://localhost/"): href = href[len("http://localost/") :] - assert href.startswith("/prefix/"), { + assert href.startswith("/prefix/"), json.dumps({ "path": path, + "path_to_get": path_to_get, "href_or_src": href, "element_parent": str(el.parent), - } + }, indent=4, default=repr) def test_base_url_affects_metadata_extra_css_urls(app_client_base_url_prefix): ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url is omitted in JSON and CSV views 1058790545 | |
974558267 | https://github.com/simonw/datasette/issues/1519#issuecomment-974558267 | https://api.github.com/repos/simonw/datasette/issues/1519 | IC_kwDOBm6k_c46FpQ7 | simonw 9599 | 2021-11-20T00:37:57Z | 2021-11-20T00:37:57Z | OWNER | Thanks to #1522 I have a live demo that exhibits this bug now: https://apache-proxy-demo.datasette.io/prefix/fixtures/attraction_characteristic |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url is omitted in JSON and CSV views 1058790545 | |
974558076 | https://github.com/simonw/datasette/issues/1522#issuecomment-974558076 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46FpN8 | simonw 9599 | 2021-11-20T00:36:56Z | 2021-11-20T00:36:56Z | OWNER | That 503 error is really frustrating: I have a deploy running at https://apache-proxy-demo.datasette.io/prefix/ and after a fresh deploy it serves 503 errors for quite a while - then eventually starts working. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974557766 | https://github.com/simonw/datasette/issues/1522#issuecomment-974557766 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46FpJG | simonw 9599 | 2021-11-20T00:35:25Z | 2021-11-20T00:35:25Z | OWNER | Wrote a TIL about |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974542348 | https://github.com/simonw/datasette/issues/1522#issuecomment-974542348 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46FlYM | simonw 9599 | 2021-11-19T23:41:47Z | 2021-11-19T23:44:07Z | OWNER | Do I have to use |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974541971 | https://github.com/simonw/datasette/issues/1522#issuecomment-974541971 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46FlST | simonw 9599 | 2021-11-19T23:40:32Z | 2021-11-19T23:40:32Z | OWNER | I want to be able to use build arguments to specify which commit version or branch of Datasette to deploy. This is proving hard to work out. I have this in my Dockerfile now: ``` ARG DATASETTE_REF RUN pip install https://github.com/simonw/datasette/archive/${DATASETTE_REF}.zip ``` Which works locally:
But I can't figure out the right incantation to pass to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974523569 | https://github.com/simonw/datasette/issues/1522#issuecomment-974523569 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46Fgyx | simonw 9599 | 2021-11-19T22:51:10Z | 2021-11-19T22:51:10Z | OWNER | I wan a GitHub Action which I can manually activate to deploy a new version of that demo... and I want it to bake in the latest release of Datasette so I can use it to demonstrate bug fixes. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974523297 | https://github.com/simonw/datasette/issues/1522#issuecomment-974523297 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46Fguh | simonw 9599 | 2021-11-19T22:50:31Z | 2021-11-19T22:50:31Z | OWNER | Demo code is now at: https://github.com/simonw/datasette/tree/main/demos/apache-proxy |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974521687 | https://github.com/simonw/datasette/issues/1522#issuecomment-974521687 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46FgVX | simonw 9599 | 2021-11-19T22:46:26Z | 2021-11-19T22:46:26Z | OWNER | Oh weird, it started working: https://datasette-apache-proxy-demo-j7hipcg4aq-uc.a.run.app/prefix/fixtures/sortable |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974506401 | https://github.com/simonw/datasette/issues/1522#issuecomment-974506401 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46Fcmh | simonw 9599 | 2021-11-19T22:11:51Z | 2021-11-19T22:11:51Z | OWNER | This is frustrating: I have the following Dockerfile: ```dockerfile FROM python:3-alpine RUN apk add --no-cache \ apache2 \ apache2-proxy \ bash RUN pip install datasette ENV TINI_VERSION v0.18.0 ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-static /tini RUN chmod +x /tini Append this to the end of the default httpd.conf fileRUN echo $'ServerName localhost\n\ \n\ <Proxy *>\n\ Order deny,allow\n\ Allow from all\n\ </Proxy>\n\ \n\ ProxyPass /prefix/ http://localhost:8001/\n\ Header add X-Proxied-By "Apache2"' >> /etc/apache2/httpd.conf RUN echo $'Datasette' > /var/www/localhost/htdocs/index.html WORKDIR /app ADD https://latest.datasette.io/fixtures.db /app/fixtures.db RUN echo $'#!/usr/bin/env bash\n\ set -e\n\ \n\ httpd -D FOREGROUND &\n\ datasette fixtures.db --setting base_url "/prefix/" -h 0.0.0.0 -p 8001 &\n\ \n\ wait -n' > /app/start.sh RUN chmod +x /app/start.sh EXPOSE 80
ENTRYPOINT ["/tini", "--", "/app/start.sh"]
!/bin/bashhttps://til.simonwillison.net/cloudrun/ship-dockerfile-to-cloud-runNAME="datasette-apache-proxy-demo" PROJECT=$(gcloud config get-value project) IMAGE="gcr.io/$PROJECT/$NAME" gcloud builds submit --tag $IMAGE
gcloud run deploy \
--allow-unauthenticated \
--platform=managed \
--image $IMAGE $NAME \
--port 80
Cloud Run logs: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974478126 | https://github.com/simonw/datasette/issues/1519#issuecomment-974478126 | https://api.github.com/repos/simonw/datasette/issues/1519 | IC_kwDOBm6k_c46FVsu | simonw 9599 | 2021-11-19T21:16:36Z | 2021-11-19T21:16:36Z | OWNER | In the meantime I can catch these errors by changing the test to run each path twice, once with and once without the prefix. This should accurately simulate how Apache is working here. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url is omitted in JSON and CSV views 1058790545 | |
974477465 | https://github.com/simonw/datasette/issues/1519#issuecomment-974477465 | https://api.github.com/repos/simonw/datasette/issues/1519 | IC_kwDOBm6k_c46FViZ | simonw 9599 | 2021-11-19T21:15:30Z | 2021-11-19T21:15:30Z | OWNER | I think what's happening here is Apache is actually making a request to This is pretty confusing! I think Datasette should ONLY reply to But shipping that change could break existing deployments. Maybe that should be a breaking change for 1.0. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url is omitted in JSON and CSV views 1058790545 | |
974450232 | https://github.com/simonw/datasette/issues/1519#issuecomment-974450232 | https://api.github.com/repos/simonw/datasette/issues/1519 | IC_kwDOBm6k_c46FO44 | simonw 9599 | 2021-11-19T20:41:53Z | 2021-11-19T20:42:19Z | OWNER | https://docs.datasette.io/en/stable/deploying.html#apache-proxy-configuration says I should use |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url is omitted in JSON and CSV views 1058790545 | |
974447950 | https://github.com/simonw/datasette/issues/1519#issuecomment-974447950 | https://api.github.com/repos/simonw/datasette/issues/1519 | IC_kwDOBm6k_c46FOVO | simonw 9599 | 2021-11-19T20:40:19Z | 2021-11-19T20:40:19Z | OWNER | Figured it out! The test is not an accurate recreation of what is happening, because it doesn't simulate a request with a path of |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url is omitted in JSON and CSV views 1058790545 | |
974435661 | https://github.com/simonw/datasette/issues/1522#issuecomment-974435661 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46FLVN | simonw 9599 | 2021-11-19T20:33:42Z | 2021-11-19T20:33:42Z | OWNER | Should just be a case of deploying this ```Dockerfile FROM python:3-alpine RUN apk add --no-cache \ apache2 \ apache2-proxy \ bash RUN pip install datasette ENV TINI_VERSION v0.18.0 ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-static /tini RUN chmod +x /tini Append this to the end of the default httpd.conf fileRUN echo $'ServerName localhost\n\ \n\ <Proxy *>\n\ Order deny,allow\n\ Allow from all\n\ </Proxy>\n\ \n\ ProxyPass /foo/bar/ http://localhost:9000/\n\ Header add X-Proxied-By "Apache2"' >> /etc/apache2/httpd.conf RUN echo $'Datasette' > /var/www/localhost/htdocs/index.html WORKDIR /app ADD https://latest.datasette.io/fixtures.db /app/fixtures.db RUN echo $'#!/usr/bin/env bash\n\ set -e\n\ \n\ httpd -D FOREGROUND &\n\ datasette fixtures.db --setting base_url "/foo/bar/" -p 9000 &\n\ \n\ wait -n' > /app/start.sh RUN chmod +x /app/start.sh EXPOSE 80 ENTRYPOINT ["/tini", "--", "/app/start.sh"] ``` I can follow this TIL: https://til.simonwillison.net/cloudrun/ship-dockerfile-to-cloud-run |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy a live instance of demos/apache-proxy 1058896236 | |
974433520 | https://github.com/simonw/datasette/issues/1521#issuecomment-974433520 | https://api.github.com/repos/simonw/datasette/issues/1521 | IC_kwDOBm6k_c46FKzw | simonw 9599 | 2021-11-19T20:32:29Z | 2021-11-19T20:32:29Z | OWNER | This configuration works great. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Docker configuration for exercising Datasette behind Apache mod_proxy 1058815557 | |
974433320 | https://github.com/simonw/datasette/issues/1519#issuecomment-974433320 | https://api.github.com/repos/simonw/datasette/issues/1519 | IC_kwDOBm6k_c46FKwo | simonw 9599 | 2021-11-19T20:32:04Z | 2021-11-19T20:32:04Z | OWNER | Still not clear why the tests pass but the live example fails. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url is omitted in JSON and CSV views 1058790545 | |
974433206 | https://github.com/simonw/datasette/issues/1519#issuecomment-974433206 | https://api.github.com/repos/simonw/datasette/issues/1519 | IC_kwDOBm6k_c46FKu2 | simonw 9599 | 2021-11-19T20:31:52Z | 2021-11-19T20:31:52Z | OWNER | Modified my
And now the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url is omitted in JSON and CSV views 1058790545 | |
974422829 | https://github.com/simonw/datasette/issues/1519#issuecomment-974422829 | https://api.github.com/repos/simonw/datasette/issues/1519 | IC_kwDOBm6k_c46FIMt | simonw 9599 | 2021-11-19T20:26:35Z | 2021-11-19T20:26:35Z | OWNER | In the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url is omitted in JSON and CSV views 1058790545 | |
974420619 | https://github.com/simonw/datasette/issues/1519#issuecomment-974420619 | https://api.github.com/repos/simonw/datasette/issues/1519 | IC_kwDOBm6k_c46FHqL | simonw 9599 | 2021-11-19T20:25:19Z | 2021-11-19T20:25:19Z | OWNER | The implementations of https://github.com/simonw/datasette/blob/85849935292e500ab7a99f8fe0f9546e903baad3/datasette/utils/init.py#L228-L254 https://github.com/simonw/datasette/blob/85849935292e500ab7a99f8fe0f9546e903baad3/datasette/utils/init.py#L710-L729 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url is omitted in JSON and CSV views 1058790545 | |
974418496 | https://github.com/simonw/datasette/issues/1519#issuecomment-974418496 | https://api.github.com/repos/simonw/datasette/issues/1519 | IC_kwDOBm6k_c46FHJA | simonw 9599 | 2021-11-19T20:24:16Z | 2021-11-19T20:24:16Z | OWNER | Here's the code that generates And here's the code for And for |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url is omitted in JSON and CSV views 1058790545 | |
974398399 | https://github.com/simonw/datasette/issues/1519#issuecomment-974398399 | https://api.github.com/repos/simonw/datasette/issues/1519 | IC_kwDOBm6k_c46FCO_ | simonw 9599 | 2021-11-19T20:08:20Z | 2021-11-19T20:22:02Z | OWNER | The relevant test is this one: https://github.com/simonw/datasette/blob/30255055150d7bc0affc8156adc18295495020ff/tests/test_html.py#L1608-L1649 I modified that test to add
This data as json, testall, testnone, testresponse, CSV
Something very weird is going on here. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url is omitted in JSON and CSV views 1058790545 | |
974405016 | https://github.com/simonw/datasette/issues/1519#issuecomment-974405016 | https://api.github.com/repos/simonw/datasette/issues/1519 | IC_kwDOBm6k_c46FD2Y | simonw 9599 | 2021-11-19T20:14:19Z | 2021-11-19T20:15:05Z | OWNER | I added
And it's really strange that the bug doesn't show up in the tests. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url is omitted in JSON and CSV views 1058790545 | |
974391204 | https://github.com/simonw/datasette/issues/1519#issuecomment-974391204 | https://api.github.com/repos/simonw/datasette/issues/1519 | IC_kwDOBm6k_c46FAek | simonw 9599 | 2021-11-19T20:02:41Z | 2021-11-19T20:02:41Z | OWNER | Bug confirmed: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url is omitted in JSON and CSV views 1058790545 | |
974389472 | https://github.com/simonw/datasette/issues/1519#issuecomment-974389472 | https://api.github.com/repos/simonw/datasette/issues/1519 | IC_kwDOBm6k_c46FADg | simonw 9599 | 2021-11-19T20:01:02Z | 2021-11-19T20:01:02Z | OWNER | I now have a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url is omitted in JSON and CSV views 1058790545 | |
974388295 | https://github.com/simonw/datasette/issues/1521#issuecomment-974388295 | https://api.github.com/repos/simonw/datasette/issues/1521 | IC_kwDOBm6k_c46E_xH | simonw 9599 | 2021-11-19T20:00:06Z | 2021-11-19T20:00:06Z | OWNER | And this is the version that proxies to a ```Dockerfile FROM python:3-alpine RUN apk add --no-cache \ apache2 \ apache2-proxy \ bash RUN pip install datasette ENV TINI_VERSION v0.18.0 ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-static /tini RUN chmod +x /tini Append this to the end of the default httpd.conf fileRUN echo $'ServerName localhost\n\ \n\ <Proxy *>\n\ Order deny,allow\n\ Allow from all\n\ </Proxy>\n\ \n\ ProxyPass /foo/bar/ http://localhost:9000/\n\ Header add X-Proxied-By "Apache2"' >> /etc/apache2/httpd.conf RUN echo $'Datasette' > /var/www/localhost/htdocs/index.html WORKDIR /app ADD https://latest.datasette.io/fixtures.db /app/fixtures.db RUN echo $'#!/usr/bin/env bash\n\ set -e\n\ \n\ httpd -D FOREGROUND &\n\ datasette fixtures.db --setting base_url "/foo/bar/" -p 9000 &\n\ \n\ wait -n' > /app/start.sh RUN chmod +x /app/start.sh EXPOSE 80 ENTRYPOINT ["/tini", "--", "/app/start.sh"] ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Docker configuration for exercising Datasette behind Apache mod_proxy 1058815557 | |
974380798 | https://github.com/simonw/datasette/issues/1521#issuecomment-974380798 | https://api.github.com/repos/simonw/datasette/issues/1521 | IC_kwDOBm6k_c46E97- | simonw 9599 | 2021-11-19T19:54:26Z | 2021-11-19T19:54:26Z | OWNER | Got it working! Here's a ```Dockerfile FROM python:3-alpine RUN apk add --no-cache \ apache2 \ apache2-proxy \ bash RUN pip install datasette ENV TINI_VERSION v0.18.0 ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-static /tini RUN chmod +x /tini Append this to the end of the default httpd.conf fileRUN echo $'ServerName localhost\n\ \n\ <Proxy *>\n\ Order deny,allow\n\ Allow from all\n\ </Proxy>\n\ \n\ ProxyPass / http://localhost:9000/\n\ ProxyPassReverse / http://localhost:9000/\n\ Header add X-Proxied-By "Apache2"' >> /etc/apache2/httpd.conf WORKDIR /app RUN echo $'#!/usr/bin/env bash\n\ set -e\n\ \n\ httpd -D FOREGROUND &\n\ datasette -p 9000 &\n\ \n\ wait -n' > /app/start.sh RUN chmod +x /app/start.sh EXPOSE 80 ENTRYPOINT ["/tini", "--", "/app/start.sh"] ``` Run it like this:
{"python": {"version": "3.10.0", "full": "3.10.0 (default, Nov 13 2021, 03:23:03) [GCC 10.3.1 20210424]"}, "datasette": {"version": "0.59.2"}, "asgi": "3.0", "uvicorn": "0.15.0", "sqlite": {"version": "3.35.5", "fts_versions": ["FTS5", "FTS4", "FTS3"], "extensions": {"json1": null}, "compile_options": ["COMPILER=gcc-10.3.1 20210424", "ENABLE_COLUMN_METADATA", "ENABLE_DBSTAT_VTAB", "ENABLE_FTS3", "ENABLE_FTS3_PARENTHESIS", "ENABLE_FTS4", "ENABLE_FTS5", "ENABLE_GEOPOLY", "ENABLE_JSON1", "ENABLE_MATH_FUNCTIONS", "ENABLE_RTREE", "ENABLE_UNLOCK_NOTIFY", "MAX_VARIABLE_NUMBER=250000", "SECURE_DELETE", "THREADSAFE=1", "USE_URI"]}} ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Docker configuration for exercising Datasette behind Apache mod_proxy 1058815557 | |
974371116 | https://github.com/simonw/datasette/issues/1521#issuecomment-974371116 | https://api.github.com/repos/simonw/datasette/issues/1521 | IC_kwDOBm6k_c46E7ks | simonw 9599 | 2021-11-19T19:45:47Z | 2021-11-19T19:45:47Z | OWNER | https://github.com/krallin/tini says:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Docker configuration for exercising Datasette behind Apache mod_proxy 1058815557 | |
974336020 | https://github.com/simonw/datasette/issues/1521#issuecomment-974336020 | https://api.github.com/repos/simonw/datasette/issues/1521 | IC_kwDOBm6k_c46EzAU | simonw 9599 | 2021-11-19T19:10:48Z | 2021-11-19T19:10:48Z | OWNER | There's a promising looking minimal Apache 2 proxy config here: https://stackoverflow.com/questions/26474476/minimal-configuration-for-apache-reverse-proxy-in-docker-container |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Docker configuration for exercising Datasette behind Apache mod_proxy 1058815557 | |
974334278 | https://github.com/simonw/datasette/issues/1521#issuecomment-974334278 | https://api.github.com/repos/simonw/datasette/issues/1521 | IC_kwDOBm6k_c46EylG | simonw 9599 | 2021-11-19T19:08:09Z | 2021-11-19T19:08:09Z | OWNER | Stripping comments using this StackOverflow recipe: https://unix.stackexchange.com/a/157619
Result is here: https://gist.github.com/simonw/0a05090df5fcff8e8b3334621fa17976 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Docker configuration for exercising Datasette behind Apache mod_proxy 1058815557 | |
974332787 | https://github.com/simonw/datasette/issues/1521#issuecomment-974332787 | https://api.github.com/repos/simonw/datasette/issues/1521 | IC_kwDOBm6k_c46EyNz | simonw 9599 | 2021-11-19T19:05:52Z | 2021-11-19T19:05:52Z | OWNER | Made myself this Dockerfile to let me explore a bit: ```Dockerfile FROM python:3-alpine RUN apk add --no-cache \ apache2 CMD ["sh"]
This is the main Apache HTTP server configuration file. It contains theconfiguration directives that give the server its instructions....
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Docker configuration for exercising Datasette behind Apache mod_proxy 1058815557 | |
974327812 | https://github.com/simonw/datasette/issues/1521#issuecomment-974327812 | https://api.github.com/repos/simonw/datasette/issues/1521 | IC_kwDOBm6k_c46ExAE | simonw 9599 | 2021-11-19T18:58:49Z | 2021-11-19T18:59:55Z | OWNER | From this example: https://github.com/tigelane/dockerfiles/blob/06cff2ac8cdc920ebd64f50965115eaa3d0afb84/Alpine-Apache2/Dockerfile#L25-L31 it looks like running ``` APACHE - AlpineRUN apk --update add apache2 php5-apache2 && \ #apk add openrc --no-cache && \ rm -rf /var/cache/apk/* && \ sed -i 's/#ServerName www.example.com:80/ServerName localhost/' /etc/apache2/httpd.conf && \ mkdir -p /run/apache2/ Upload our files from folder "dist".COPY dist /var/www/localhost/htdocs Manually set up the apache environment variablesENV APACHE_RUN_USER www-data ENV APACHE_RUN_GROUP www-data ENV APACHE_LOG_DIR /var/log/apache2 ENV APACHE_LOCK_DIR /var/lock/apache2 ENV APACHE_PID_FILE /var/run/apache2.pid Execute apache2 on runEXPOSE 80 ENTRYPOINT ["httpd"] CMD ["-D", "FOREGROUND"] ``` I think I'll create my own separate copy and modify that. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Docker configuration for exercising Datasette behind Apache mod_proxy 1058815557 | |
974321391 | https://github.com/simonw/datasette/issues/1521#issuecomment-974321391 | https://api.github.com/repos/simonw/datasette/issues/1521 | IC_kwDOBm6k_c46Evbv | simonw 9599 | 2021-11-19T18:49:15Z | 2021-11-19T18:57:18Z | OWNER | This pattern looks like it can help: https://ahmet.im/blog/cloud-run-multiple-processes-easy-way/ - see example in https://github.com/ahmetb/multi-process-container-lazy-solution I got that demo working locally like this:
I want to use |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Docker configuration for exercising Datasette behind Apache mod_proxy 1058815557 | |
974322178 | https://github.com/simonw/datasette/issues/1521#issuecomment-974322178 | https://api.github.com/repos/simonw/datasette/issues/1521 | IC_kwDOBm6k_c46EvoC | simonw 9599 | 2021-11-19T18:50:22Z | 2021-11-19T18:50:22Z | OWNER | I'll get this working on my laptop first, but then I want to get it up and running on Cloud Run - maybe with a GitHub Actions workflow in this repo that re-deploys it on manual execution. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Docker configuration for exercising Datasette behind Apache mod_proxy 1058815557 | |
974310208 | https://github.com/simonw/datasette/issues/1519#issuecomment-974310208 | https://api.github.com/repos/simonw/datasette/issues/1519 | IC_kwDOBm6k_c46EstA | simonw 9599 | 2021-11-19T18:32:31Z | 2021-11-19T18:32:31Z | OWNER | Having a live demo running on Cloud Run that proxies through Apache and uses |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url is omitted in JSON and CSV views 1058790545 | |
974309591 | https://github.com/simonw/datasette/issues/1519#issuecomment-974309591 | https://api.github.com/repos/simonw/datasette/issues/1519 | IC_kwDOBm6k_c46EsjX | simonw 9599 | 2021-11-19T18:31:32Z | 2021-11-19T18:31:32Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url is omitted in JSON and CSV views 1058790545 | |
974308215 | https://github.com/simonw/datasette/issues/1520#issuecomment-974308215 | https://api.github.com/repos/simonw/datasette/issues/1520 | IC_kwDOBm6k_c46EsN3 | simonw 9599 | 2021-11-19T18:29:26Z | 2021-11-19T18:29:26Z | OWNER | The solution that jumps to mind first is that it would be neat if routes could return something that meant "actually my bad, I can't handle this after all - move to the next one in the list". A related idea: it might be useful for custom views like my one here to say "no actually call the default view for this, but give me back the response so I can modify it in some way". Kind of like Django or ASGI middleware. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Pattern for avoiding accidental URL over-rides 1058803238 | |
974300823 | https://github.com/simonw/datasette/issues/1518#issuecomment-974300823 | https://api.github.com/repos/simonw/datasette/issues/1518 | IC_kwDOBm6k_c46EqaX | simonw 9599 | 2021-11-19T18:18:32Z | 2021-11-19T18:18:32Z | OWNER |
I can definitely support this using pure-JSON - I could make two versions of the row available, one that's an array of cell objects and the other that's an object mapping column names to column raw values. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Complete refactor of TableView and table.html template 1058072543 | |
974285803 | https://github.com/simonw/datasette/issues/1518#issuecomment-974285803 | https://api.github.com/repos/simonw/datasette/issues/1518 | IC_kwDOBm6k_c46Emvr | simonw 9599 | 2021-11-19T17:56:48Z | 2021-11-19T18:14:30Z | OWNER | Very confused by this piece of code here: https://github.com/simonw/datasette/blob/1c13e1af0664a4dfb1e69714c56523279cae09e4/datasette/views/table.py#L37-L63 I added it in https://github.com/simonw/datasette/commit/754836eef043676e84626c4fd3cb993eed0d2976 - in the new world that should probably be replaced by pure JSON. Aha - this comment explains it: https://github.com/simonw/datasette/issues/521#issuecomment-505279560
The goal was to support neater custom templates like this:
```html+jinja
{% for row in display_rows %}
{{ row["First_Name"] }} {{ row["Last_Name"] }}... ``` This may be an argument for continuing to allow non-JSON-objects through to the HTML templates. Need to think about that a bit more. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Complete refactor of TableView and table.html template 1058072543 | |
974287570 | https://github.com/simonw/datasette/issues/1518#issuecomment-974287570 | https://api.github.com/repos/simonw/datasette/issues/1518 | IC_kwDOBm6k_c46EnLS | simonw 9599 | 2021-11-19T17:59:33Z | 2021-11-19T17:59:33Z | OWNER | I'm going to try leaning into the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Complete refactor of TableView and table.html template 1058072543 | |
974108455 | https://github.com/simonw/datasette/pull/1495#issuecomment-974108455 | https://api.github.com/repos/simonw/datasette/issues/1495 | IC_kwDOBm6k_c46D7cn | mroswell 192568 | 2021-11-19T14:14:35Z | 2021-11-19T14:14:35Z | CONTRIBUTOR | A nudge on this. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Allow routes to have extra options 1033678984 | |
973820125 | https://github.com/simonw/sqlite-utils/issues/342#issuecomment-973820125 | https://api.github.com/repos/simonw/sqlite-utils/issues/342 | IC_kwDOCGYnMM46C1Dd | simonw 9599 | 2021-11-19T07:25:55Z | 2021-11-19T07:25:55Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Extra options to `lookup()` which get passed to `insert()` 1058196641 | |
973802998 | https://github.com/simonw/sqlite-utils/issues/342#issuecomment-973802998 | https://api.github.com/repos/simonw/sqlite-utils/issues/342 | IC_kwDOCGYnMM46Cw32 | simonw 9599 | 2021-11-19T06:59:22Z | 2021-11-19T06:59:32Z | OWNER | I don't think I need the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Extra options to `lookup()` which get passed to `insert()` 1058196641 | |
973802766 | https://github.com/simonw/sqlite-utils/issues/342#issuecomment-973802766 | https://api.github.com/repos/simonw/sqlite-utils/issues/342 | IC_kwDOCGYnMM46Cw0O | simonw 9599 | 2021-11-19T06:58:45Z | 2021-11-19T06:58:45Z | OWNER | And neither does |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Extra options to `lookup()` which get passed to `insert()` 1058196641 | |
973802469 | https://github.com/simonw/sqlite-utils/issues/342#issuecomment-973802469 | https://api.github.com/repos/simonw/sqlite-utils/issues/342 | IC_kwDOCGYnMM46Cwvl | simonw 9599 | 2021-11-19T06:58:03Z | 2021-11-19T06:58:03Z | OWNER | Also: I don't think |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Extra options to `lookup()` which get passed to `insert()` 1058196641 | |
973802308 | https://github.com/simonw/sqlite-utils/issues/342#issuecomment-973802308 | https://api.github.com/repos/simonw/sqlite-utils/issues/342 | IC_kwDOCGYnMM46CwtE | simonw 9599 | 2021-11-19T06:57:37Z | 2021-11-19T06:57:37Z | OWNER | Here's the current full method signature for I could add a test which uses introspection ( |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Extra options to `lookup()` which get passed to `insert()` 1058196641 | |
973801650 | https://github.com/simonw/sqlite-utils/issues/342#issuecomment-973801650 | https://api.github.com/repos/simonw/sqlite-utils/issues/342 | IC_kwDOCGYnMM46Cwiy | simonw 9599 | 2021-11-19T06:55:56Z | 2021-11-19T06:55:56Z | OWNER |
I do worry that I'll add more keyword arguments to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Extra options to `lookup()` which get passed to `insert()` 1058196641 | |
973800795 | https://github.com/simonw/sqlite-utils/issues/342#issuecomment-973800795 | https://api.github.com/repos/simonw/sqlite-utils/issues/342 | IC_kwDOCGYnMM46CwVb | simonw 9599 | 2021-11-19T06:54:08Z | 2021-11-19T06:54:08Z | OWNER | Looking at the code for |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Extra options to `lookup()` which get passed to `insert()` 1058196641 | |
973700549 | https://github.com/simonw/datasette/issues/1518#issuecomment-973700549 | https://api.github.com/repos/simonw/datasette/issues/1518 | IC_kwDOBm6k_c46CX3F | simonw 9599 | 2021-11-19T03:31:20Z | 2021-11-19T03:31:26Z | OWNER | ... and while I'm doing all of this I can rewrite the templates to not use those cheating magical functions AND document the template context at the same time, refs: - #1510. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Complete refactor of TableView and table.html template 1058072543 | |
973700322 | https://github.com/simonw/datasette/issues/1518#issuecomment-973700322 | https://api.github.com/repos/simonw/datasette/issues/1518 | IC_kwDOBm6k_c46CXzi | simonw 9599 | 2021-11-19T03:30:30Z | 2021-11-19T03:30:30Z | OWNER | Right now the HTML version gets to cheat - it passes through objects that are not JSON serializable, including custom functions that can then be called by Jinja. I'm interested in maybe removing this cheating - if the HTML version could only request JSON-serializable extras those could be exposed in the API as well. It would also help cleanup the kind-of-nasty pattern I use in the current |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Complete refactor of TableView and table.html template 1058072543 | |
973698917 | https://github.com/simonw/datasette/issues/1518#issuecomment-973698917 | https://api.github.com/repos/simonw/datasette/issues/1518 | IC_kwDOBm6k_c46CXdl | simonw 9599 | 2021-11-19T03:26:18Z | 2021-11-19T03:29:03Z | OWNER | A (likely incomplete) list of features on the table page:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Complete refactor of TableView and table.html template 1058072543 |
Advanced export
JSON shape: default, array, newline-delimited, object
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]) , [performed_via_github_app] TEXT); CREATE INDEX [idx_issue_comments_issue] ON [issue_comments] ([issue]); CREATE INDEX [idx_issue_comments_user] ON [issue_comments] ([user]);
user >30