Skrypty Workiva i zakończenie wsparcia dla Pythona 3.9
Aby zapewnić zgodność automatyzacji z przyszłością, firma Workiva wprowadziła obsługę języka Python 3.13wraz z ustawieniem na poziomie skryptu, które umożliwia wybór wersji środowiska wykonawczego dla każdego skryptu. W tym przewodniku wyjaśnimy, jak bezpiecznie przejść z wersji 3.9 na 3.13, co należy testować i jak wprowadzać zmiany z minimalnymi zakłóceniami.
Do października 2025 r.Workiva Scripting opierało się na oficjalnej wersji Pythona 3.9 wydanej przez Python Software Foundation; w październiku 2025 r. wersja ta zakończyła wsparcie techniczne i nie otrzymuje już aktualizacji zabezpieczeń ani poprawek błędów.
W odpowiedzi na to firma Workiva Scripting przeszła na korzystanie z obrazu Amazon Linux 2023 (AL2023), który zapewnia własne kompilacje i obsługę zarówno języka Python 3.9, jak i Python 3.13. Ta zmiana zapewnia, że Python 3.9 będzie otrzymywał bieżące poprawki zabezpieczeń i będzie objęty konserwacją w ramach cyklu aktualizacji Amazon, nawet jeśli pierwotna wersja Pythona nie będzie już łatana przez społeczność open-source.
W wyniku tej zmiany Workiva Scripting będzie nadal obsługiwać bezpieczne uruchamianie skryptów w Pythonie 3.9 do października 2027 r..
Kto powinien pomyśleć o tej migracji? Każdy, kto obecnie uruchamia automatyzacje Workiva Scripting w Pythonie 3.9 — niezależnie od tego, czy są one wyzwalane ręcznie, z łańcuchów czy za pośrednictwem zintegrowanych automatyzacji.
A co jeśli nic nie zrobię? Twoje skrypty pozostaną bezpieczne dzięki poprawkom AL2023 do października 2027 r., ale zalecamy migrację do Pythona 3.13, ponieważ jest to nowszy obsługiwany środowisko wykonawcze.
Aby uzyskać więcej informacji na temat harmonogramu zakończenia cyklu życia oprogramowania i obsługiwanych wersji, zapoznaj się z oficjalną stroną internetową ze stanem wydania języka Python.
W jaki sposób Workiva wspiera tę zmianę
Firma Workiva wprowadziła aktualizację dającą programistom kontrolę nad tym, z którego środowiska wykonawczego Pythona korzystają ich skrypty. Aktualizacja wprowadza następujące zmiany:
- Obsługa Pythona 3.13 – Wszystkie nowe skrypty domyślnie korzystają teraz z Pythona 3.13, najnowszej stabilnej wersji.
- Konfiguracja środowiska wykonawczego dla każdego skryptu – Każdy skrypt pozwala teraz wybrać wersję środowiska wykonawczego Pythona (3.9 lub 3.13), z której korzysta.
- Wsteczna kompatybilność – Wszystkie istniejące skrypty nadal korzystają z Pythona 3.9, dopóki ich nie zaktualizujesz.
- Obsługa edytora i interfejsu API – Możesz ustawić lub zaktualizować środowisko wykonawcze bezpośrednio w edytorze skryptów Workiva lub za pomocą interfejsu API skryptów.
Dzięki temu możesz przeprowadzić migrację we własnym tempie, bezpiecznie ją testować i zmieniać skrypty produkcyjne tylko wtedy, gdy masz pewność, że są gotowe.
Harmonogram tej zmiany
Aby ułatwić Ci planowanie, podajemy harmonogram wdrażania:
- Python 3.13 dostępny w Workiva (wrzesień 2025) – Wszyscy klienci mogą skonfigurować swoje skrypty tak, aby działały w Pythonie 3.9 lub Pythonie 3.13, korzystając z interfejsu API skryptów lub edytora skryptów.
- Koniec wsparcia dla Pythona 3.9 (październik 2025) – Oficjalne wsparcie społeczności Pythona dobiega końca. Workiva będzie kontynuować wsparcie poprzez AL2023 do października 2027 r., ale zdecydowanie zaleca się migrację.
- Październik 2027 – Workiva planuje zakończyć wsparcie dla Pythona 3.9 w październiku 2027 r., po czym wszystkie skrypty będą działać w Pythonie 3.13.
Dokonywanie przejścia
Należy rozpocząć testowanie skryptów w Pythonie 3.13 tak szybko, jak to możliwe, jednocześnie utrzymując produkcję tylko na wersji 3.9, dopóki nie zostanie potwierdzone, że skrypty działają poprawnie w wersji 3.13. Gdy już będziesz czuć się komfortowo korzystając z Pythona 3.13, bezzwłocznie przełącz swoje skrypty produkcyjne na środowisko wykonawcze Pythona 3.13.
Przełączanie skryptu na Pythona 3.13
Zalecany przez nas schemat wdrażania: utwórz kopię, zaktualizuj wersję, przetestuj, a następnie wypromuj. Minimalizuje to ryzyko dla produkcji i pozwala zachować historię przebiegów, jeśli jest to potrzebne.
Krok 1 — Utwórz kopię
- W Workiva zrób kopię swojego skryptu produkcyjnego.
Kopia zostanie ustawiona na Pythona 3.13.
Krok 2 — Przetestuj i dostosuj kopię
- Uruchom kopię w bezpiecznym/testowym kontekście.
- Napraw wszelkie zmiany powodujące przerwanie działania usługi (zobacz „Typowe problemy i rozwiązania”).
- Sprawdź wyniki, skutki uboczne i wydajność.
Krok 3 — Zmień na 3.13 (dwie opcje)
Opcja A — Ta opcja pozwoli zachować historię cyklu produkcyjnego
- Prześlij zaktualizowany kod z kopii z powrotem do oryginalnego skryptu za pomocą kopiuj-wklej.
- Zmień środowisko wykonawcze oryginalnego skryptuna Python 3.13.
- Uruchom ponownie testy, a następnie wznów normalne planowanie/wyzwalanie w oryginale.
- (Opcjonalnie) Zarchiwizuj lub wycofaj kopię.
Opcja B — Nie spowoduje to zachowania historii cyklu produkcyjnego
- Zmień wyzwalacz produkcyjny (czyli wyzwalacz łańcuchów) tak, aby wskazywał z oryginalnego skryptuna skopiowany skrypt .
- Kopia staje się nowym skryptem produkcyjnym (uruchamianym w Pythonie 3.13).
- (Opcjonalnie) Zarchiwizuj lub wycofaj oryginał.
Wezwanie do działania: Niezależnie od wybranej opcji, przenieś wszystkie aktywne skrypty do Pythona 3.13 do października 2027 r.
Zaktualizuj wersję środowiska wykonawczego Pythona
Korzystanie z interfejsu API skryptów
-
Określ czas wykonania skryptu.
POBIERZ /prototype/platform/scripts/{script_id}Sprawdź wartość
runtimew odpowiedzi. -
Zaktualizuj skrypt do wersji Python 3.13.
PATCH /prototype/platform/scripts/{script_id} Typ zawartości: application/json [{ "op": "replace", "path": "/runtime", "value": "python3.13" }]
Więcej szczegółów znajdziesz w dokumentacji Scripting Prototype API.
Przykład: Zmiana i odczyt wersji środowiska wykonawczego Pythona
Poniższy przykładowy kod pokazuje, jak zaktualizować wersję środowiska wykonawczego skryptu (3.9 lub 3.13) za pomocą interfejsu API skryptów i jak sprawdzić aktualnie skonfigurowaną wersję.
import os import requests CLIENT_ID = os.environ.get("CLIENT_ID") CLIENT_SECRET = os.environ.get("CLIENT_SECRET") SCRIPT_ID = os.environ.get("SCRIPT_ID") VERSION = os.environ.get("VERSION") #VERSION = "python3.9" #VERSION = "python3.13" SCRIPTS_V1_URL = "https://api.app.wdesk.com/prototype/platform/scripts" AUTH_URL = "https://api.app.wdesk.com/iam/v1/oauth2/token" def change_version(clientId, clientSecret, scriptId, version): auth_header = get_auth_header(clientId, clientSecret) # Zmień wersję Pythona req_body = [ { "op": "replace", "path": "/runtime", "value": version } ] resp = requests.patch( f"{SCRIPTS_V1_URL}/{scriptId}", json=req_body, headers=auth_header ) name = resp.json().get("name") new_version = resp.json().get("runtime") print("Wersja Pythona dla skryptu '" + name + "' została zmieniona na: " + new_version.replace("python", "")) def read_version(client_id, client_secret): auth_header = get_auth_header(client_id, client_secret) # odczytaj wersję Pythona resp = requests.get( f"{SCRIPTS_V1_URL}/{SCRIPT_ID}", headers=auth_header ) name = resp.json().get("name") configured_version = resp.json().get("runtime") print("Wersja Pythona dla skryptu '" + name + "': " + configured_version.replace("python", "")) # Pobiera nagłówki uwierzytelniania dla danego identyfikatora klienta i klucza tajnego def get_auth_header(client_id, client_secret): token_headers = {"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8"} data_field = ( f"client_id={client_id}&client_secret={client_secret}" f"&grant_type=client_credentials" ) auth_resp = requests.post(f"{AUTH_URL}", data=data_field, headers=token_headers) auth_json = auth_resp.json() bearer_token = "Bearer " + auth_json.get("access_token") return {"Autoryzacja": bearer_token} change_version(CLIENT_ID, CLIENT_SECRET, SCRIPT_ID, VERSION) #read_version(CLIENT_ID, CLIENT_SECRET)Korzystanie z edytora skryptów
Za pomocą Edytora skryptów można konfigurować środowisko wykonawcze bezpośrednio w interfejsie użytkownika. Nowa lista rozwijana jest dostępna w obszarze Właściwości → Wersja środowiska wykonawczego, gdzie można wybrać pomiędzy Pythonem 3.9 i Pythonem 3.13.
Aby zaktualizować skrypt w Edytorze:
- Otwórz skrypt w Edytorze skryptów.
- Przejdź do panelu Właściwości po prawej stronie.
- W obszarze Wersja środowiska wykonawczegowybierz Python 3.13 z listy rozwijanej.
- Zapisz zmiany.
- Przed udostępnieniem skryptu do produkcji należy go uruchomić w bezpiecznym/testowym środowisku.
Porady
- Upewnij się, że wszystkie pakiety innych firm w Twoich skryptach są kompatybilne z Pythonem 3.13.
- Zaktualizuj wszystkie przypięte wersje pakietów w pliku
requirements.txt(na przykład, w przeciwieństwie do Pythona 3.9,requests==2.28nie jest potrzebne w wersji 3.13). - Przeczytaj oficjalną dokumentację Pythona, aby uzyskać szczegółowe informacje na temat głównych zmian w wersjach Pythona 3.10, 3.11, 3.12i 3.13, w tym:
- Dopasowanie wzorców strukturalnych, aktualizacje f-stringów, ulepszone komunikaty o błędach
- Znaczne usprawnienia wydajności (wywołania funkcji, operacje na ciągach, zarządzanie pamięcią, serializacja/deserializacja JSON)
- Wycofanie pakietów i usunięcie niektórych parametrów pakietów (
cgi,cgitb,distutilsitd. zostały wycofane; usunięto parametr „loop”asyncio)
Typowe problemy związane z migracją i ich rozwiązania przy przejściu z wersji 3.9 do 3.13
Poniżej przedstawiamy kilka typowych problemów, z jakimi możesz się spotkać podczas przenoszenia skryptów z Pythona 3.9 do 3.13, wraz z proponowanymi rozwiązaniami:
- Biblioteki innych firm – Niektóre pakiety mogą jeszcze nie obsługiwać języka Python 3.13.
- Napraw: Zaktualizuj do najnowszej kompatybilnej wersji lub zamień na alternatywę. Dokładnie przetestuj wszystkie przypięte wymagania. Możesz sprawdzić informacje dotyczące swoich bibliotek na stronie pyreadiness.org/3.13i zapoznać się z artykułem pomocy „Obsługiwane biblioteki skryptowe i zależności”, aby uzyskać więcej informacji.
- Wersja bibliotekiRequests – Biblioteka
requestjest najczęstszą biblioteką zewnętrzną w Workiva Scripting. W początkowych wersjach Pythona 3.9 skrypty nie będą działać poprawnie w wersjirequest2.30.0 lub nowszej. Po migracji do Pythona 3.13 możesz używać najnowszych wersjiżądańbez problemów. - Python 3.13 różni się w obsłudze ciągów znaków i bajtów – Bardziej rygorystyczne sprawdzanie typów może ujawnić ukryte problemy.
- Naprawiono: Sprawdź kod, który łączy
ciągi znakówibajtyi upewnij się, że kodowanie/dekodowanie jest jawne.
- Naprawiono: Sprawdź kod, który łączy
- Zachowanie daty i godziny oraz strefy czasowej – Python 3.13 ma różnice w bibliotece
zoneinfooraz bardziej rygorystycznym parsowaniu.- Naprawiono: Przetestowano całą logikę daty/czasu, zwłaszcza formatowanie i konwersję strefy czasowej.
- Serializacja JSON – Niektóre obiekty mogą nie zostać zserializowane ze względu na bardziej rygorystyczne zasady.
- Naprawiono: Upewnij się, że obiekty niestandardowe są konwertowane przed
json.dumpslub użyj domyślnych enkoderów.
- Naprawiono: Upewnij się, że obiekty niestandardowe są konwertowane przed
- Przestarzałe interfejsy API – Niektóre funkcje biblioteki stdlib języka Python
(na przykładasyncio.get_event_loop,distutilsi niektóre interfejsy API ustawień regionalnych) uznane za przestarzałe w języku Python 3.9 zostały usunięte.- Naprawiono: Zaktualizowano kod, aby użyć obsługiwanych alternatyw.
- Zmiany wydajności – Pętle i zadania asynchroniczne mogą zachowywać się inaczej.
- Naprawiono: Uruchom testy obciążeniowe na ścieżkach krytycznych; w razie potrzeby zaktualizuj logikę współbieżności.
Wskazówka: Zawsze najpierw testuj kopie swoich skryptów produkcyjnych. Poprawki wprowadzane w kontrolowanym środowisku testowym zmniejszają ryzyko wystąpienia problemów produkcyjnych.
Co nowego w Pythonie 3.13
Oto kilka najważniejszych zmian w Pythonie 3.13:
- Ulepszony interaktywny interpreter – edycja wielowierszowa, kolory i kolorowe ślady.
- Eksperymentalny tryb kompilacji z wolnymi wątkami – umożliwia prawdziwie równoległe wątki (bez GIL) na niektórych platformach.
- Eksperymentalny JIT – Wczesne prace przygotowawcze do poprawy wydajności.
- Lepsze narzędzia do debugowania –
locals()Mutacje działają teraz z dobrze zdefiniowaną semantyką. - Nowy alokator pamięci – zmodyfikowany mimalloc uwzględniony i domyślnie włączony, jeśli jest obsługiwany.
- Mniejsze pliki – ciągi dokumentacyjne usuwają początkowe odstępy, co zmniejsza zużycie pamięci i rozmiar plików .pyc.
- Nowy back-end dbm – domyślnie używa
dbm.sqlite3. - Aktualizacje platformy – macOS minimum 10.13, iOS/Android Tier 3, WASI Tier 2.
- Ulepszenia pisania – Domyślne ustawienia pisania, zawężanie, elementy tylko do odczytu i adnotacje o wycofaniu.
- Usunięcia – usunięto przestarzałe moduły (na przykład
cgi,telnetlib,imghdr,lib2to3itd.).
Pełne informacje o wydaniu można znaleźć w dokumencie Python.org „Co nowego w Pythonie 3.13”.
Jeśli chcesz przejrzeć szczegółowe zmiany wprowadzone między wersjami 3.9 i 3.13, zobacz:
Często zadawane pytania
P: Czy muszę od razu przenieść wszystkie swoje skrypty?
NIE. Możesz już teraz rozpocząć testowanie skryptów w Pythonie 3.13 i w tym czasie kontynuować produkcję w wersji 3.9. Wszystkie skrypty muszą zostać zmigrowane do Pythona 3.13 przed październikiem 2027.
P: Czy moje istniejące skrypty przestaną działać automatycznie, gdy Python 3.9 osiągnie koniec wsparcia?
NIE. Rozwiązanie Workiva Scripting opiera się na wersji języka Python 3.9 firmy Amazon w systemie Amazon Linux 2023 (AL2023), który będzie otrzymywał poprawki zabezpieczeń do października 2027 r. Oficjalne zakończenie wsparcia dla Pythona 3.9 nie będzie miało wpływu na Twoje skrypty.
P: Czy mogę testować skrypty w wersji 3.13, kontynuując produkcję w wersji 3.9?
Tak. Utwórz kopię swojego skryptu w celu przetestowania — kopia jest automatycznie skonfigurowana do uruchamiania w Pythonie 3.13. Przed przekazaniem kopii do produkcji należy naprawić wszelkie błędy. Aby uniknąć utraty kompatybilności, korzystaj z osobnych wersji — jednej dla systemu 3.9 i jednej dla systemu 3.13 — dzięki czemu w razie potrzeby będziesz mógł łatwo przełączać się między nimi.
P: Czy edytor skryptów obsługuje zmianę środowiska wykonawczego?
Tak. Możesz ustawić środowisko wykonawcze Pythona bezpośrednio w Edytorze skryptów — otwórz skrypt, przejdź do panelu Właściwości i wybierz wersję w obszarze Wersja środowiska wykonawczego.
P: Gdzie mogę dowiedzieć się więcej o wsparciu bibliotecznym?
Sprawdź pyreadiness.org/3.13 oraz artykuł pomocy Workiva „Obsługiwane biblioteki skryptowe i zależności”.
P: Co stanie się z moimi historycznymi danymi uruchomień, jeśli zmienię skrypt?
To zależy. Jeśli nadpiszesz oryginalny skrypt, zachowasz historię uruchomień. Jeśli wskażesz wyzwalacze na kopię, historia uruchomienia oryginału pozostanie przy starym skrypcie.
P: Co się stanie, jeśli nie dokonam migracji do października 2027 r.?
Twoje skrypty zostaną automatycznie przeniesione na wersję Python 3.13 po październiku 2027 r., kiedy Workiva zakończy obsługę uruchamiania skryptów w Pythonie 3.9 zgodnie z AL2023. Aby uniknąć zakłóceń, należy przetestować skrypty i przenieść je do Pythona 3.13 na długo przed październikiem 2027 r.
P: Czy muszę zmienić łańcuchy lub zintegrowane automatyzacje podczas migracji?
NIE. Twoje łańcuchy i zintegrowane automatyzacje będą działać prawidłowo, pod warunkiem, że bazowe skrypty zostaną zaktualizowane do wersji Pythona 3.13. Głównym krokiem jest upewnienie się, że sam skrypt został zmigrowany.
P: Czy mogę przywrócić skrypt z wersji Python 3.13 do 3.9, jeśli wystąpią problemy?
NIE. Po ustawieniu skryptu na Pythona 3.13, nie można przełączyć jego środowiska wykonawczego z powrotem na Pythona 3.9. Jeśli potrzebujesz rozwiązania awaryjnego, utwórz osobną kopię skryptu w Pythonie 3.9 — utrzymuj jedną wersję w wersji 3.9, a drugą w 3.13 — dzięki temu będziesz mógł powrócić do kopii w wersji 3.9, jeśli podczas testowania pojawią się problemy.