小编ala*_*uri的帖子

从私有 PyPI 定义 setup.py 依赖项

我想通过在setup.py.

我已经尝试通过以下方式指定在哪里查找依赖项dependency_links

setup(
    ...

    install_requires=["foo==1.0"],
    dependency_links=["https://my.private.pypi/"],

    ...
)
Run Code Online (Sandbox Code Playgroud)

我还尝试在以下位置定义整个 URL dependency_links

setup(
    ...

    install_requires=[],
    dependency_links=["https://my.private.pypi/foo/foo-1.0.tar.gz"],

    ...
)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试安装时python setup.py install,它们都不适合我。

有谁能够帮助我?

编辑:

使用第一段代码我得到了这个错误:

...

Installed .../test-1.0.0-py3.7.egg
Processing dependencies for test==1.0.0
Searching for foo==1.0
Reading https://my.private.pypi/
Reading https://pypi.org/simple/foo/
Couldn't find index page for 'foo' (maybe misspelled?)
Scanning index of all packages (this may take a while)
Reading https://pypi.org/simple/
No local packages or working download links found for foo==1.0
error: Could not find suitable distribution …
Run Code Online (Sandbox Code Playgroud)

pip setuptools pypi setup.py python-packaging

5
推荐指数
1
解决办法
2408
查看次数

Tornado中具有多个进程的异步连接池

我正在使用Tornado 4.2.1tornadoes 2.4.1库来查询我的Elasticsearch数据库,我正在寻找一种方法来初始化多个进程服务中的多个RequestHandler实例之间共享的连接池.

有可能吗?Tornado是否有特定的库来做到这一点?

提前致谢

asynchronous connection-pooling pool tornado elasticsearch

4
推荐指数
1
解决办法
907
查看次数

多台机器上的 Celery 任务

我有一台安装了 RabbitMQ 代理的服务器和两个 Celery 消费者(main1.pymain2.py),它们都连接到同一个代理。

在第一个消费者 ( main1.py ) 中,我实现了一个 Celery Beat,它在特定队列上多次发送不同的任务:

app = Celery('tasks', broker=..., backend=...)
app.conf.task_routes = (
    [
        ('tasks.beat', {'queue': 'print-queue'}),
    ],
)
app.conf.beat_schedule = {
    'beat-every-10-seconds': {
        'task': 'tasks.beat',
        'schedule': 10.0
    },
}

@app.task(name='tasks.beat', bind=True)
def beat(self):
    for i in range(10):
        app.send_task("tasks.print", args=[i], queue="print-queue")

    return None
Run Code Online (Sandbox Code Playgroud)

在第二个消费者(main2.py)中,我实现了上面所说的任务:

app = Celery('tasks', broker=..., backend=...)
app.conf.task_routes = (
    [
        ('tasks.print', {'queue': 'print-queue'}),
    ],
)

@app.task(name='tasks.print', bind=True)
def print(self, name):
    return name
Run Code Online (Sandbox Code Playgroud)

当我启动两个 Celery …

python task rabbitmq celery celerybeat

2
推荐指数
1
解决办法
2898
查看次数

Celery SQS 消费者的填充不正确

我正在尝试为 SQS 队列设置 Celery 使用者。

我将 Celery 4.1.0 与 Python3 一起使用,并以这种方式发送了带有库 boto3 (1.5.28) 的消息:

response = queue.send_message(MessageBody='Hello World')
Run Code Online (Sandbox Code Playgroud)

到目前为止一切正常。

然后我尝试以这种方式设置 Celery 消费者:

@app.task(base=celery.Task, name='test', bind=True)
def test(self, message):
    print(message)
    return True
Run Code Online (Sandbox Code Playgroud)

但我得到了这个回溯:

  ...

  File ".../lib/python3.6/site-packages/kombu/transport/SQS.py", line 350, in _on_messages_ready
    msg_parsed = self._message_to_python(msg, qname, queue)
  File ".../lib/python3.6/site-packages/kombu/transport/SQS.py", line 215, in _message_to_python
    body = base64.b64decode(message['Body'].encode())
  File ".../lib/python3.6/base64.py", line 87, in b64decode
    return binascii.a2b_base64(s)
binascii.Error: Incorrect padding
Run Code Online (Sandbox Code Playgroud)

我所做的有什么问题吗?我需要一些特定的配置来使用 SQS 队列吗?

预先感谢!

amazon-sqs consumer celery python-3.x boto3

2
推荐指数
1
解决办法
830
查看次数