RC-5
This commit is contained in:
@@ -11,6 +11,7 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"os"
|
||||
@@ -78,7 +79,9 @@ func (w *Worker) Run(ctx context.Context) {
|
||||
case <-ctx.Done():
|
||||
return
|
||||
case <-t.C:
|
||||
_ = w.one(ctx)
|
||||
if err := w.one(ctx); err != nil {
|
||||
log.Printf("artifact worker: %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -142,12 +145,12 @@ func (w *Worker) one(ctx context.Context) error {
|
||||
img, err := w.generate(ctx, cfg, x, prompt, negativePrompt)
|
||||
if err != nil {
|
||||
w.fail(ctx, x.ID, err)
|
||||
return err
|
||||
return fmt.Errorf("task %s: %w", x.ID, err)
|
||||
}
|
||||
if len(img.Bytes) == 0 {
|
||||
err := errors.New("image provider returned empty output")
|
||||
w.fail(ctx, x.ID, err)
|
||||
return err
|
||||
return fmt.Errorf("task %s: %w", x.ID, err)
|
||||
}
|
||||
if img.Ext == "" {
|
||||
img.Ext = "png"
|
||||
@@ -202,7 +205,7 @@ func (w *Worker) one(ctx context.Context) error {
|
||||
outDir := filepath.Join(w.dir, artifactID)
|
||||
if err := os.MkdirAll(outDir, 0o750); err != nil {
|
||||
w.fail(ctx, x.ID, err)
|
||||
return err
|
||||
return fmt.Errorf("task %s: %w", x.ID, err)
|
||||
}
|
||||
if preset == collectionPresetRaccoon {
|
||||
rawName := "art." + strings.TrimPrefix(strings.ToLower(img.Ext), ".")
|
||||
@@ -214,16 +217,21 @@ func (w *Worker) one(ctx context.Context) error {
|
||||
imageName := "image." + finalExt
|
||||
if err := atomicWrite(filepath.Join(outDir, imageName), finalBytes, 0o640); err != nil {
|
||||
w.fail(ctx, x.ID, err)
|
||||
return err
|
||||
return fmt.Errorf("task %s: %w", x.ID, err)
|
||||
}
|
||||
if err := atomicWrite(filepath.Join(outDir, "manifest.json"), mb, 0o640); err != nil {
|
||||
w.fail(ctx, x.ID, err)
|
||||
return err
|
||||
return fmt.Errorf("task %s: %w", x.ID, err)
|
||||
}
|
||||
imgURI := w.uri(filepath.ToSlash(filepath.Join(relDir, imageName)))
|
||||
manURI := w.uri(filepath.ToSlash(filepath.Join(relDir, "manifest.json")))
|
||||
_, err = w.db.ExecContext(ctx, `UPDATE tasks SET artifact_status='ready',artifact_uri=?,artifact_manifest_uri=?,artifact_error=NULL WHERE id=?`, imgURI, manURI, x.ID)
|
||||
return err
|
||||
if err != nil {
|
||||
w.fail(ctx, x.ID, err)
|
||||
return fmt.Errorf("task %s: finalize artifact: %w", x.ID, err)
|
||||
}
|
||||
log.Printf("artifact worker task %s ready: %s", x.ID, imgURI)
|
||||
return nil
|
||||
}
|
||||
|
||||
func joinPrompt(parts ...string) string {
|
||||
|
||||
Reference in New Issue
Block a user