Skip to content

Cannot use functions in device_server config file #179

@dstoychev

Description

@dstoychev

Here is the config file that I pass to device_server:

#!/usr/bin/python

import microscope
import microscope.testsuite.devices as testdevices
from microscope.device_server import device

host = "localhost"

def make_xy_stage(**kwargs):
    del kwargs
    stage = testdevices.TestStage(
        limits={
            "X": microscope.AxisLimits(0, 25000),
            "Y": microscope.AxisLimits(0, 12000),
        }
    )
    return {"xy-stage": stage}

DEVICES = [
    device(testdevices.TestCamera, host, 8000),
    device(make_xy_stage, host, 8001)
]

And here is the error I am getting:

Traceback (most recent call last):
  File ".\device_server.py", line 596, in <module>
    sys.exit(main(sys.argv))
  File ".\device_server.py", line 572, in main
    serve_devices(devices)
  File ".\device_server.py", line 450, in serve_devices
    servers[-1].start()
  File "C:\Program Files\Python38\lib\multiprocessing\process.py", line 121, in start
    self._popen = self._Popen(self)
  File "C:\Program Files\Python38\lib\multiprocessing\context.py", line 224, in _Popen
    return _default_context.get_context().Process._Popen(process_obj)
  File "C:\Program Files\Python38\lib\multiprocessing\context.py", line 327, in _Popen
    return Popen(process_obj)
  File "C:\Program Files\Python38\lib\multiprocessing\popen_spawn_win32.py", line 93, in __init__
    reduction.dump(process_obj, to_child)
  File "C:\Program Files\Python38\lib\multiprocessing\reduction.py", line 60, in dump
    ForkingPickler(file, protocol).dump(obj)
_pickle.PicklingError: Can't pickle <function make_xy_stage at 0x0000024940606670>: import of module 'config' failed
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Program Files\Python38\lib\multiprocessing\spawn.py", line 107, in spawn_main
    new_handle = reduction.duplicate(pipe_handle,
  File "C:\Program Files\Python38\lib\multiprocessing\reduction.py", line 79, in duplicate
    return _winapi.DuplicateHandle(
PermissionError: [WinError 5] Access is denied

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions