15 Replies
1984 Ford Laser
1984 Ford Laser3mo ago
I was just reading this article from a year ago regarding the availability of WebGPU in Workers: https://blog.cloudflare.com/webgpu-in-workers/ The article mentions needing to use DOs to work with WebGPU. Has anyone had any success with using WebGPU since that article, as it seemed like things were very much stil happening when it was published. I have a use case for transcoding short videos on demand with a quick turn around, and was wondering if this might be the path forward, as there doesn't seem to me much info in this space
The Cloudflare Blog
You can now use WebGPU in Cloudflare Workers
Today, we are introducing WebGPU support to Cloudflare Workers. This blog will explain why it's important, why we did it, how you can use it, and what comes next.
1984 Ford Laser
1984 Ford Laser3mo ago
Thats what I thought, I had seen that mention of local dev only a few times. I haven't yet tried to transcode video using workers, just wasn't sure if I was missing some obvious solution. Thanks for the info
Dragonlord
Dragonlord3mo ago
When you push a worker to production do alarms set before get deleted?
Unsmart
Unsmart3mo ago
No, alarms are durable
Isaac McFadyen
Isaac McFadyen3mo ago
^ durable = they persist just like storage does, even across redeploys
egg
egg3mo ago
Am I doing something wrong here? I'm trying to close a websocket immediately. Would prefer to have instant closure.
#reject_websocket(code?: number, reason?: string) {
let { 0: webSocket, 1: server } = new WebSocketPair()

server.accept() // Always throws Error: Network connection lost. Uncatchable
// vs
this.ctx.acceptWebSocket(server) // Does not throw but causes ~2 second delay to close ws.

server.close(code, reason)

return new cf_global.Response(null, {
status: 101,
webSocket,
})
}
#reject_websocket(code?: number, reason?: string) {
let { 0: webSocket, 1: server } = new WebSocketPair()

server.accept() // Always throws Error: Network connection lost. Uncatchable
// vs
this.ctx.acceptWebSocket(server) // Does not throw but causes ~2 second delay to close ws.

server.close(code, reason)

return new cf_global.Response(null, {
status: 101,
webSocket,
})
}
Unknown User
Unknown User3mo ago
Message Not Public
Sign In & Join Server To View
Milan
Milan3mo ago
webSocketError() would run if something broke on the WebSocket, not if your application code threw an exception. If you're just calling a func/method that can throw and you want to handle exceptions you should wrap it in a try...catch
Unknown User
Unknown User3mo ago
Message Not Public
Sign In & Join Server To View
Milan
Milan3mo ago
No prob!
Avi
Avi3mo ago
>"The Durable Object's code has been updated, this version can no longer access storage." How can this happen if we dont deploy a new version? separate question: is there a suggested pattern for setting a TTL on durableobject storage? e.g. "clear after 1 hour?" alarms?
Isaac McFadyen
Isaac McFadyen3mo ago
Likely a runtime update (meaning the runtime, workerd, or the underlying storage that backs Durable Objects).
Chaika
Chaika3mo ago
could also be caused by tailing
euan
euan3mo ago
So Sqlite durable objects Vs D1. When does this change the decision matrix to use one or the other? JSON blobs?
Isaac McFadyen
Isaac McFadyen3mo ago
DO SQLite is more of a lower level primitive that you can use to build your own solution. It's missing most of the things that D1 does/will eventually bring like replication, any cross-DB querying, etc. If you wanted to build the next D1: use DO SQLite, but if you just want a database you can easily access and query from Workers or the Cloudflare API then use D1. Also DO SQLite has lower limits currently.
Want results from more Discord servers?
Add your server