小编Cha*_*s R的帖子

使用Python请求发布JSON

我需要将JSON从客户端POST到服务器.我正在使用Python 2.7.1和simplejson.客户端正在使用请求.服务器是CherryPy.我可以从服务器获取硬编码的JSON(代码未显示),但是当我尝试将JSON发送到服务器时,我得到"400 Bad Request".

这是我的客户端代码:

data = {'sender':   'Alice',
    'receiver': 'Bob',
    'message':  'We did it!'}
data_json = simplejson.dumps(data)
payload = {'json_payload': data_json}
r = requests.post("http://localhost:8080", data=payload)
Run Code Online (Sandbox Code Playgroud)

这是服务器代码.

class Root(object):

    def __init__(self, content):
        self.content = content
        print self.content  # this works

    exposed = True

    def GET(self):
        cherrypy.response.headers['Content-Type'] = 'application/json'
        return simplejson.dumps(self.content)

    def POST(self):
        self.content = simplejson.loads(cherrypy.request.body.read())
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

python json cherrypy python-requests

545
推荐指数
8
解决办法
71万
查看次数

如何为多个环境自定义requirements.txt?

我有两个分支,开发和生产.每个都有依赖关系,其中一些是不同的.开发指向本身正在开发的依赖项.同样适用于生产.我需要部署到Heroku,它希望每个分支的依赖关系都在一个名为'requirements.txt'的文件中.

组织的最佳方式是什么?

我想到的是:

  • 维护单独的需求文件,每个分支一个(必须经常合并!)
  • 告诉Heroku我想要使用哪个需求文件(环境变量?)
  • 编写部署脚本(创建临时分支,修改需求文件,提交,部署,删除临时分支)

python deployment heroku requirements.txt

88
推荐指数
3
解决办法
2万
查看次数

Python中更好的函数组合

我在Python工作.最近,我发现了一个名为fn的精彩小包.我一直在用它来进行功能组合.

例如,而不是:

baz(bar(foo(x))))
Run Code Online (Sandbox Code Playgroud)

用fn,你可以写:

(F() >> foo >> bar >> baz)(x) .
Run Code Online (Sandbox Code Playgroud)

当我看到这个时,我立刻想到了Clojure:

(-> x foo bar baz) .
Run Code Online (Sandbox Code Playgroud)

但请注意,在Clojure中,输入位于左侧.我想知道这在python/fn中是否可行.

python functional-programming clojure function-composition

11
推荐指数
1
解决办法
2997
查看次数

具有副作用的事件采购

我正在使用熟悉的事件采购模式构建服务:

  1. 收到请求.
  2. 聚合的历史记录已加载.
  3. 聚合重建(从其历史).
  4. 准备新事件并更新聚合以响应来自步骤1的传入请求.
  5. 这些事件将写入日志,并可供任何订阅者使用(发布).

就我而言,第5步分为两部分.事件将写入事件日志.后台进程从事件日志中读取并发布从偏移量开始的所有事件.

在某些情况下,除了与聚合相关的事件之外,我还需要发布副作用.就系统而言,这些也是事件,因为它们被其他服务消耗并影响其他服务的状态.但是,它们不会影响此服务中聚合的历史记录,也不需要重建它.

我该如何在代码中处理这些?

选项1-不要将副作用事件写入事件日志.在步骤5之前的主要过程中发布这些内容.

选项2-将所有内容写入事件日志,并在加载历史记录时忽略副作用事件.(这些不是历史的一部分!)

选项3-将副作用事件写入虚拟聚合,以便发布它们,但从不加载.

选项4-?

在第一个选项中,如果存在并发冲突,则可能会出现问题.如果在步骤5中写入失败,则副作用不能轻易回滚.第二个选项写入不属于聚合历史记录的事件.在步骤2中加载时,必须忽略这些副作用事件.第三种选择感觉就像一个黑客.

哪一项似乎对你好?

domain-driven-design event-driven-design event-sourcing

5
推荐指数
2
解决办法
1122
查看次数